【问题标题】:Elasticsearch - Does forcing _id on elasticsearch piles up to only one shard?Elasticsearch - 在 elasticsearch 上强制 _id 是否只会堆积一个分片?
【发布时间】:2022-10-25 14:24:41
【问题描述】:

假设我有 2 个具有以下 ID 的文档:

id0001 id0002

由于我强制文档的 ID,弹性搜索如何将其放置在分片中? elasticsearch 会将所有这些放在同一个分片中吗?换句话说,弹性搜索如何计算文档在分片中的放置位置?

【问题讨论】:

    标签: elasticsearch elastic-stack spring-data-elasticsearch


    【解决方案1】:

    每个文档 is routed 到一个特定的分片取决于它的 _routing 值,默认为它的 ID 哈希。

    routing = _routing != null ? hash(_routing) : hash(_id)
    routing_factor = num_routing_shards / num_primary_shards
    shard_num = (hash(_routing) % num_routing_shards) / routing_factor
    

    所以shard_num 将是特定_routing 值或文档_id 值的散列的直接函数。

    在您的示例中,id0001id0002 肯定会落在两个不同的分片上,前提是您的索引有多个主分片

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-17
      • 1970-01-01
      • 2015-06-14
      • 1970-01-01
      • 1970-01-01
      • 2011-08-04
      • 1970-01-01
      相关资源
      最近更新 更多