elasticsearch,Optimization,elasticsearch" /> elasticsearch,Optimization,elasticsearch" />

Optimization 哪些Elasticsearch指数需要优化?

Optimization 哪些Elasticsearch指数需要优化?,optimization,elasticsearch,Optimization,elasticsearch,假设我面对的是一个Elasticsearch数据库,它有一组给定的索引和大量分布在其中的文档。当我呼叫http://localhost:9200/_optimize它需要很长时间才能运行,结果证明这是一项必要的工作,明显的提示是数据库大小减少了约20% 现在我想定期优化每个索引,而不是整个数据库。对我们来说,这很有趣,因为通常的操作并不是一次涵盖所有指数。随着时间的推移,几乎所有指数都会受到影响。我如何找出哪些指数需要优化 我发现有用的是使用http://localhost:9200/_stat

假设我面对的是一个Elasticsearch数据库,它有一组给定的索引和大量分布在其中的文档。当我呼叫
http://localhost:9200/_optimize
它需要很长时间才能运行,结果证明这是一项必要的工作,明显的提示是数据库大小减少了约20%

现在我想定期优化每个索引,而不是整个数据库。对我们来说,这很有趣,因为通常的操作并不是一次涵盖所有指数。随着时间的推移,几乎所有指数都会受到影响。我如何找出哪些指数需要优化

我发现有用的是使用
http://localhost:9200/_stats/docs

我还能做其他检查吗


也许要强调这一点,这个问题不是关于何时、为什么、如何优化或如何避免优化。ES中的索引基本上是磁盘上的文件。每次执行索引操作时,都会将文档附加到此类文件或新的段文件(取决于刷新周期)。优化过程将较小的Lucene段合并为较大的段

当对索引执行删除操作或更新操作(更新=删除文档的旧版本并重新索引文档的新版本)时,文档不会实际删除,而是标记为删除。每当合并操作开始时,就是实际删除“标记为已删除”文档的时候了

这就是为什么查看已删除文档的数量然后合并可以提高磁盘分配空间的原因。通常,不需要优化操作,而是由ES自动执行。如果您真的想这样做,请注意它会消耗IO和CPU周期。对于那些在未来不太可能改变的指数(例如,过去的日志),这可能是有用的一种情况。不建议在其他场景中手动执行此操作

“哪些索引需要优化?”——您知道的那些索引不太可能改变(不再写入它们)。理想情况下,一个索引最好只有一个段(搜索只有一个段的索引比搜索由多个段组成的索引性能更好)


此外,我还建议进行优化。

感谢您提及这些细分市场。我将URL扩展到
http://localhost:9200/_stats/docs,段