Elasticsearch -elasticsearch上的forcing _id是否只堆积到一个碎片?

vddsk6oq  于 2022-11-02  发布在  ElasticSearch
关注(0)|答案(1)|浏览(301)

假设我有2个具有以下ID的文档:
编号0001编号0002
既然我强制使用了文档的id,ElasticSearch如何将其放置在碎片中?ElasticSearch是否会将所有这些都放置在同一个碎片中?换句话说,ElasticSearch如何计算将文档放置在碎片中的什么位置?

pw9qyyiw

pw9qyyiw1#

每个文档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肯定会位于两个不同的碎片上,前提是您的索引具有多个主碎片

相关问题