ElasticSearch 中索引关闭的用例是什么?

问题描述 投票:0回答:2

我发现ES索引可以关闭。 https://www.elastic.co/guide/en/elasticsearch/reference/6.3/indices-open-close.html

封闭索引对集群几乎没有任何开销(除了维护其元数据),并且会阻止读/写操作。

我正在尝试优化 ES 以写入大量数据,即每秒 100K 消息。每小时都会创建新索引,旧索引不再用于写入。但是,可以从旧索引中读取。

我是否应该关闭旧索引以优化写入,并在需要对它们执行搜索时按需打开它们?

elasticsearch indexing lucene
2个回答
13
投票

如果您的索引已关闭,您显然无法从中读取/搜索。有些操作,例如更改索引分析器,要求您在执行此操作之前关闭索引,然后重新打开索引。

除此之外,如果您知道需要从旧索引中读取/搜索,那么只需将它们保持打开状态即可。每次需要读取它们时关闭/重新打开它们是没有意义的。

如果您确实想优化写入,您可以做的是实现热/温架构并将旧索引移动到热节点,同时将要写入的新索引保留在热节点上。

如果您想优化索引速度,您可以实施一些其他最佳实践。


3
投票

封闭指数的用例非常小众。除了更改一些设置(例如Val的答案)之外,我没有看到它们的广泛(且正确)使用。当涉及到扩展集群时,您可能会遇到问题(因为封闭索引的分片不会四处移动),或者当您加载 N 个封闭索引时,您可能最终会给集群带来太大的压力。

实际上,按需有效打开和关闭指数所需的管道是不合理的。或者至少我没有看到。这就是为什么现在冻结索引已被弃用。

您可能会考虑替代方案,例如

强制合并、快照/恢复,或者根据您的 Elasticsearch 许可证可搜索快照

如果您使用时间序列数据,您还可以考虑托管解决方案,例如

Sematext Logs(偏见警报:我为 Sematext 工作)。

© www.soinside.com 2019 - 2024. All rights reserved.