Elasticsearch 6.x 中 number_of_routing_shards 的最大值

Max value of number_of_routing_shards in Elasticsearch 6.x

索引 number_of_routing_shards 的最大推荐值是多少?

我可以指定一个非常高的值,比如 30000 吗?如果我这样做会有什么副作用?

这将为您提供一个包含 30.000 个分片的索引(根据 https://www.elastic.co/guide/en/elasticsearch/reference/6.x/indices-split-index.html),这是...没用的。

作为所有软件调整,建议值因您而异:

  • 用例
  • 硬件(虚拟机/网络/磁盘...)?
  • 指标

分片是由 elasticsearch 创建的索引的“切片”,可以灵活地分发索引数据。比如几个datanode之间。

Shards,底层是一组独立的lucene段,自主工作,可以独立查询。这使得高性能成为可能,因为搜索操作可以拆分为独立的进程。

您拥有的分片越多,给定索引的存储分配就越灵活。这显然有一些注意事项。

分布式搜索必须相互等待以将步骤结果合并为一致的响应。如果有很多分片,则查询必须分成更多部分,(这有计算开销)。查询被分发到每个分片,其散列匹配任何当前搜索(并非所有分片都需要被每个查询命中)因此最繁忙(较慢)的分片将定义搜索的整体性能。

最好有一个平衡的索引数量。每个索引都有一个存储在 cluster state 中的内存占用空间。您拥有的索引越多,集群状态越大,在所有集群节点之间共享所需的时间就越多。 索引拥有的分片越多,它变得越复杂,因此将其序列化到集群状态所需的大小就越大,从而在全局范围内减慢速度。