ElasticSearch集群环境下新增文档如何确认该文档被分配到哪个分片中?

路由算法:

  ⾸先这肯定不会是随机的,否则将来要获取⽂档的时候我们就不知道从何处寻找了。实际上,这个过程是根据下⾯这个公式决定的:

  shard = hash(routing) % number_of_primary_shards

  routing 是⼀个可变值,默认是⽂档的 _id ,也可以设置成⼀个⾃定义的值。 routing通过 hash 函数⽣成⼀个数字,然后这个数字再除以 number_of_primary_shards (主分

⽚的数量)后得到 余数 。这个分布在 0 到 number_of_primary_shards-1 之间的余数,就是我们所寻求的⽂档所在分⽚的位置。
  
  这就解释了为什么我们要在创建索引的时候就确定好主分⽚的数量 并且永远不会改变这个数量:
  因为如果数量变化了,那么所有之前路由的值都会⽆效,⽂档也再也找不到了。
 
  新增⼀个⽂档(指定id)
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"
}
}
]
]
}

最新文章

  1. JS-纯js制作动态成绩表(流程控制语句+js内置对象)
  2. Android之自定义控件入门
  3. 夺命雷公狗---node.js---13之Buffer的转换
  4. 夺命雷公狗---Thinkphp----12之文章的增删改查(图片上传和关联查询)
  5. Python性能鸡汤
  6. RAC分解步骤之一,在oracle linux 4u4上安装oracle 10.2.0.1.0操作日志
  7. [OI笔记] 最长上升子序列与网络流建模
  8. vbs自学备份
  9. Linux负载均衡软件LVS之二(安装篇)[转]
  10. 中间容器 - JTabbedPane的用法的最简举例
  11. python 使用xrld
  12. LDA 线性判别分析
  13. Android APP新的“优雅”退出方式--EventBus大显身手
  14. text-stroke实现文字描边(镂空)、text-fill-color实现文字填充&渐变(+animation实现流光字体)
  15. 芯灵思Sinlinx A64开发板Linux内核定时器编程
  16. day 03 基本数据类型的使用、运算符
  17. js实现禁止pc端浏览器缩放和获取当前页面浏览器的缩放大小
  18. ABBYY FineReader Pro for Mac有哪些特性(上)
  19. Python并发编程之线程池/进程池--concurrent.futures模块
  20. idea中lombok安装

热门文章

  1. Google单元测试框架gtest之官方sample笔记4--事件监控之内存泄漏测试
  2. Image Super-Resolution via Sparse Representation——基于稀疏表示的超分辨率重建
  3. 12. Vue搭建本地服务
  4. 用vue.js实现的期货,股票的实时K线
  5. WooYun-2016-199433 -phpmyadmin-反序列化-getshell
  6. 漏洞复现-Bash之一键破壳
  7. CVE-2017-7529-Nginx越界读取缓存漏洞
  8. C# 基础 - Environment 类
  9. editplus更改编码
  10. Python中树的遍历-堆排序