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"
}
}
]
]
}

【ElasticSearch】文档路由的原理的更多相关文章

  1. ElasticSearch文档操作介绍三

    ElasticSearch文档的操作 文档存储位置的计算公式: shard = hash(routing) % number_of_primary_shards 上面公式中,routing 是一个可变 ...

  2. Elasticsearch入门教程(四):Elasticsearch文档CURD

    原文:Elasticsearch入门教程(四):Elasticsearch文档CURD 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接: ...

  3. elasticsearch 文档

    elasticsearch 文档 文档格式 索引中最基本的单元叫做文档 document. 在es中文档的示例如下: { "_index": "questions&quo ...

  4. elasticsearch文档-analysis

    elasticsearch文档-analysis   analysis 基本概念 全文搜索引擎会用某种算法对要建索引的文档进行分析, 从文档中提取出若干Token(词元), 这些算法称为Tokeniz ...

  5. elasticsearch文档-modules

    elasticsearch文档-modules modules 模块 cluster 原文 基本概念 cluster: 集群,一个集群通常由很多节点(node)组成 node: 节点,比如集群中的每台 ...

  6. Elasticsearch文档查询

    简单数据集 到目前为止,已经了解了基本知识,现在我们尝试用更逼真的数据集,这儿已经准备好了一份虚构的JSON,关于客户银行账户信息的.每个文档的结构如下: { , , "firstname& ...

  7. ElasticSearch文档及分布式文档存储

    1.什么是文档? 文档由索引(_index),类型(_type),唯一标识(_id) 组成,我们为 _index(索引) 分配相关逻辑地址分片,该索引下的数据会根据索引以及类型计算哈希来分配数据存储的 ...

  8. elasticsearch 文档阅读笔记(三)

    文档 elasticsearch是通过document的形式存储数据的,个人理解文档就是一条数据一个对象 我们添加索引文档中不仅包含了数据还包含了元数据 比如我们为一个数据添加索引 文档中不仅有jso ...

  9. elasticsearch文档-字段的mapping

    mapping == Mapping是指定义如何将document映射到搜索引擎的过程,比如一个字段是否可以查询以及如何分词等,一个索引可以存储含有不同"mapping types" ...

随机推荐

  1. 洛谷 P4747 [CERC2017]Intrinsic Interval 线段树维护连续区间

    题目描述 题目传送门 分析 考虑对于 \([l,r]\),如何求出包住它的长度最短的好区间 做法就是用一个指针从 \(r\) 向右扫,每次查询以当前指针为右端点的最短的能包住 \([l,r]\) 的好 ...

  2. 剑指 Offer 04. 二维数组中的查找 (思维)

    剑指 Offer 04. 二维数组中的查找 题目链接 本题的解法是从矩阵的右上角开始寻找目标值. 根据矩阵的元素分布特性, 当目标值大于当前位置的值时将row行号++,因为此时目标值一定位于当前行的下 ...

  3. CentOS7安装 xmlsec1 编译并运行官方示例

    1. 自动安装下列软件和依赖(默认已安装libxml2和libxslt) yum install xmlsec1-openssl xmlsec1-openssl-devel 2. 查看官网 www.a ...

  4. List调用toString()方法后,去除两头的中括号

    import org.apache.commons.lang.StringUtils; public class Test {    public static void main(String[] ...

  5. FreeBSD jail 折腾记(一)

    创建jail目录 mkdir -p /usr/jail/ 放入基本系统 方案一 make buildworld #编译基本系统 make installworld DESTDIR=/usr/jail/ ...

  6. 导出文件,responseType设置了blob,实际返回了JSON格式的错误信息的处理方式

    需求:导出文件 问题描述:由于后台直接返回的文件流,在请求下载的方法中将XHR 的 responseType 指定为 blob 或者 arraybuffer.但并不是每次的操作都是成功的,所以在接口错 ...

  7. [SPOJ2021] Moving Pebbles

    [SPOJ2021] Moving Pebbles 题目大意:给你\(N\)堆\(Stone\),两个人玩游戏. 每次任选一堆,首先拿掉至少一个石头,然后移动任意个石子到任意堆中. 谁不能移动了,谁就 ...

  8. 数据搬运组件:基于Sqoop管理数据导入和导出

    本文源码:GitHub || GitEE 一.Sqoop概述 Sqoop是一款开源的大数据组件,主要用来在Hadoop(Hive.HBase等)与传统的数据库(mysql.postgresql.ora ...

  9. python类属性

    类属性 类属性分为共有属性和私有属性. 私有属性的定义方法eg:__age(若无次定义则默认为公有属性) 类属性举例: class people: name = "china" _ ...

  10. Quartz基础使用

    Quartz基本组成部分: 调度器:Scheduler 任务:JobDetail 触发器:Trigger,包括SimpleTrigger和CronTrigger . using Quartz; usi ...