我有这种情况,系统每天在节点内生成一个索引。每个索引都有1个主分片。
因此,一天内索引的所有文档都会转到某个索引,并在一天过后,创建一个新索引。
我保留了过去60天的索引(所以这意味着我在节点中总是有60个分片)。我无法关闭旧索引,因为我希望它们支持搜索。在过了第60天之后,我删除了它们。
当我阅读以下article时,我注意到了有关索引缓冲区的内容:
默认为10%,这意味着分配给节点的总内存的10%将用作索引缓冲区大小。然后在所有不同的分片之间划分该数量
这意味着对于当天的索引,我有10%/ 60的缓冲区索引内存。所以我并没有真正使用10%。
问题是,如果我set to read only the older indices:
会发生什么index.blocks.read_only 设置为true以使索引和索引元数据只读,false设置为允许写入和元数据更改。
我会看到这样做的好处吗?就像在我唯一的可写索引中拥有整个10%的索引缓冲区一样?或者是对其他索引的搜索有所改进,因为它们只能被分段合并,因为它们不再接收写入?
谢谢!
巴勃罗
PD:我正在使用ElasticSearch 1.7.3,但我期待将来迁移到2.2。我想知道,如果可能的话,如果我有一个好处,如果这将转化为2.2
答案 0 :(得分:1)
不,您无法通过添加read_only块获得好处。释放缓冲区的唯一方法是完全关闭索引。
此外,您可能有兴趣了解https://github.com/elastic/elasticsearch/pull/14121,它可以提供"积极索引"分割缓冲区的更大份额。进入Elasticsearch 5.0。