Elasticsearch -如何重新计算到其他碎片的文档,以实现数据在碎片之间的均匀分布,同时强制_id?

dba5bblo  于 2022-11-02  发布在  ElasticSearch
关注(0)|答案(2)|浏览(134)

目前,我们在索引中保存文档时设置了_id的值。但是,这样做可以避免Elasticsearch自己计算_id,从而强制文档存储在特定的碎片中。实际上,有些碎片可能会比其他碎片大得不成比例。因为Elasticsearch根据文档的_id将文档放置在相应的shard上。
有没有一种方法可以在保持文档_id设置的同时平衡碎片?

cld4siwp

cld4siwp1#

Tldr;

在均匀分布的值上创建custom routing
即:摄取时间(如果连续索引数据)。

1sbrub3j

1sbrub3j2#

正如已经提到的,您需要一个自定义的路由。如何使用SpringDataElasticsearch来实现这一点,请参见参考文档。
请记住,当使用自定义路由来存储实体时,在执行存储文档时使用的get(id)delete(id)时,必须提供相同的路由值。
我读了elasticsearch documentation,默认情况下路由是如何计算的,我可能不会尝试实现自定义的分片分发方法,但这是我个人的看法。

相关问题