• 【ElasticSearch】文档路由的原理


    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"
     }
     }
     ]
     ]
    }
  • 相关阅读:
    快速莫比乌斯变换(FMT)和快速沃尔什变换(FWT)
    组合意义证明——「Zeilberger 老爷子的 T 恤上写了啥?」
    【题解】礼物 | [洛谷 P4916] 魔力环【20210113 省选模拟赛】【Burnside引理 容斥 组合数】
    线性基总结
    HTML中的img标签属性
    html5语义化标签
    html中代替空格、大于号、小于号等字符编码
    前端网页全局属性
    js中的script标签属性
    html中的meta标签属性
  • 原文地址:https://www.cnblogs.com/july-sunny/p/14328963.html
Copyright © 2020-2023  润新知