【ElasticSearch】文档路由的原理
ElasticSearch集群环境下新增文档如何确认该文档被分配到哪个分片中?
路由算法:
⾸先这肯定不会是随机的,否则将来要获取⽂档的时候我们就不知道从何处寻找了。实际上,这个过程是根据下⾯这个公式决定的:
shard = hash(routing) % number_of_primary_shards
routing 是⼀个可变值,默认是⽂档的 _id ,也可以设置成⼀个⾃定义的值。 routing通过 hash 函数⽣成⼀个数字,然后这个数字再除以 number_of_primary_shards (主分
PUT /nba/_doc/1
{
"name": "哈登",
"team_name": "⽕箭",
"position": "得分后卫",
"play_year": "10",
"jerse_no": "13"
}
查看⽂档在哪个分⽚上
GET /nba/_search_shards?routing=1
{
"nodes" : {
"V1JO7QXLSX-yeVI82WkgtA" : {
"name" : "node-1",
"ephemeral_id" : "_d96PgOSTnKo6nrJVqIYpw",
"transport_address" : "192.168.1.101:9300",
"attributes" : {
"ml.machine_memory" : "8589934592",
"xpack.installed" : "true",
"ml.max_open_jobs" : "20"
}
},
"z65Hwe_RR_efA4yj3n8sHQ" : {
"name" : "node-3",
"ephemeral_id" : "MOE_Ne7ZRyaKRHFSWJZWpA",
"transport_address" : "192.168.1.101:9500",
"attributes" : {
"ml.machine_memory" : "8589934592",
"ml.max_open_jobs" : "20",
"xpack.installed" : "true"
}
}
},
"indices" : {
"nba" : { }
},
"shards" : [
[
{
"state" : "STARTED",
"primary" : true,
"node" : "V1JO7QXLSX-yeVI82WkgtA",
"relocating_node" : null,
"shard" : 2,
"index" : "nba",
"allocation_id" : {
"id" : "leX_k6McShyMoM1eNQJXOA"
}
},
{
"state" : "STARTED",
"primary" : false,
"node" : "z65Hwe_RR_efA4yj3n8sHQ",
"relocating_node" : null,
"shard" : 2,
"index" : "nba",
"allocation_id" : {
"id" : "6sUSANMuSGKLgcIpBa4yYg"
}
}
]
]
}
【ElasticSearch】文档路由的原理的更多相关文章
- ElasticSearch文档操作介绍三
ElasticSearch文档的操作 文档存储位置的计算公式: shard = hash(routing) % number_of_primary_shards 上面公式中,routing 是一个可变 ...
- Elasticsearch入门教程(四):Elasticsearch文档CURD
原文:Elasticsearch入门教程(四):Elasticsearch文档CURD 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接: ...
- elasticsearch 文档
elasticsearch 文档 文档格式 索引中最基本的单元叫做文档 document. 在es中文档的示例如下: { "_index": "questions&quo ...
- elasticsearch文档-analysis
elasticsearch文档-analysis analysis 基本概念 全文搜索引擎会用某种算法对要建索引的文档进行分析, 从文档中提取出若干Token(词元), 这些算法称为Tokeniz ...
- elasticsearch文档-modules
elasticsearch文档-modules modules 模块 cluster 原文 基本概念 cluster: 集群,一个集群通常由很多节点(node)组成 node: 节点,比如集群中的每台 ...
- Elasticsearch文档查询
简单数据集 到目前为止,已经了解了基本知识,现在我们尝试用更逼真的数据集,这儿已经准备好了一份虚构的JSON,关于客户银行账户信息的.每个文档的结构如下: { , , "firstname& ...
- ElasticSearch文档及分布式文档存储
1.什么是文档? 文档由索引(_index),类型(_type),唯一标识(_id) 组成,我们为 _index(索引) 分配相关逻辑地址分片,该索引下的数据会根据索引以及类型计算哈希来分配数据存储的 ...
- elasticsearch 文档阅读笔记(三)
文档 elasticsearch是通过document的形式存储数据的,个人理解文档就是一条数据一个对象 我们添加索引文档中不仅包含了数据还包含了元数据 比如我们为一个数据添加索引 文档中不仅有jso ...
- elasticsearch文档-字段的mapping
mapping == Mapping是指定义如何将document映射到搜索引擎的过程,比如一个字段是否可以查询以及如何分词等,一个索引可以存储含有不同"mapping types" ...
随机推荐
- vue3中使用axios如何去请求数据
在vue2中一般放在created中,但是在vue3中取消了created生命周期,请求方式有两种 直接在setup中去获取数据 setup(props) { const data = reactiv ...
- 【转载】java类加载时机与过程
1 开门见山 以前曾经看到过一个java的面试题,当时觉得此题很简单,可是自己把代码运行起来,可是结果并不是自己想象的那样.题目如下: class SingleTon { private stati ...
- Prometheus时序数据库-数据的插入
Prometheus时序数据库-数据的插入 前言 在之前的文章里,笔者详细的阐述了Prometheus时序数据库在内存和磁盘中的存储结构.有了前面的铺垫,笔者就可以在本篇文章阐述下数据的插入过程. 监 ...
- 漏洞复现-2.x rce-Thinkphp远程命令执行
0x00实验环境 攻击机:win10 靶机:Ubuntu18 (docker搭建的vulhub靶场) 0x01影响版本 影响Thinkphp 2.x的版本 0x02实验目的 学 ...
- Netty源码 新连接处理
上文我们阐述了Netty的Reactor模型.在Reactor模型的第二阶段,Netty会处理各种io事件.对于客户端的各种请求就是在这个阶段去处理的.本文便来分析一个新的连接是如何被处理的. 代码的 ...
- 我给Apache顶级项目贡献了点源码。
这是why技术的第 91 篇原创文章 这篇文章其实并没有什么技术性的分享,从我的角度而言,更多是记录和思考. 把我对于源码和之前写的部分文章反哺给我的一些东西,带来的一点点思考分享给大家. 一行源码 ...
- MyBatis架构分析
我们都知道Mybatis是一个非常小巧灵活的ORM框架,深受国内广大开发者的喜爱,我们知道它的出现某种程度是为了消除所有的JDBC代码和参数的手工设置以及结果集的封装问题:基于这个一点,我们就可以 ...
- Java 使用BigDecimal计算值没有变化?
BigDecimal 加减乘除后自身变量不会变化, 需要定义一个新的BigDecimal来获取计算好后的值
- 2021年的UWP(6)——长生命周期Desktop Extension向UWP的反向通知
上一篇我们讨论了UWP和Desktop Extension间的双向通讯,适用于Desktop Extension中存在用户交互的场景.本篇我们讨论最后一种情况,与前者不同的是,Desktop Exte ...
- ElasticSearch实战系列十: ElasticSearch冷热分离架构
前言 本文主要介绍ElasticSearch冷热分离架构以及实现. 冷热分离架构介绍 冷热分离是目前ES非常火的一个架构,它充分的利用的集群机器的优劣来实现资源的调度分配.ES集群的索引写入及查询速度 ...