一尘不染

如何优化Elasticsearch的索引编制?

elasticsearch

我试图了解如何在Elasticsearch上优化索引。让我澄清我的需求;

  • 我现在有两个指标。可以这样说indexAindexB(两个索引可以看到大致相同的大小)
  • 我有6台专用于Elasticsearch的机器(我们可以说完全相同的硬件)
  • 我的elasticsearch用法中最重要的部分是写作,因为我实时进行大量写作。

所以我的问题是,如何使用这6台机器优化写入操作?

  • 我是否应该将机器分为两部分,例如3台机器indexA和3台机器indexB

要么

  • 我是否应该全部使用6台机器才能建立索引indexAindexB

  • 为了优化写操作,我还需要注意什么?

先感谢您


阅读 246

收藏
2020-06-22

共1个答案

一尘不染

这取决于情况,但是让我根据您的问题陈述得出一个方向,该结论导致了以下假设:

  • 您想执行更多写操作(不担心搜索性能)
  • 两个索引都在同一集群中
  • 将来可以添加更多系统

为了获得更好的索引性能,第一件事是您可能希望为索引使用单个分片(除非您正在使用路由)。但是由于您有6个具有单个分片的服务器,这会浪费资源,因此您可以将3个分片分配给indexA和indexB。这是针对当前方案,但建议使用约10个分片(以供将来扩展,并取决于您的数据大小)

关闭副本(如果可能,因为索引请求会等待副本响应然后返回)。尽管在生产环境中,强烈建议至少有一个副本以实现高可用性。

将刷新率设置为“ -1”或至少设置为更大的数字,例如“ 30m”。(如果这样做,您将丢失NRT搜索,但是正如您所提到的,您担心索引编制)

如果有的话,转暖

避免在字段映射中使用“ doc_values”。(尽管这样做有利于减少搜索期间的内存占用量,但它会在索引期间准备字段值,因此会增加索引时间)

如果可能/不需要,请在映射中禁用“规范”

最后阅读一下

温馨提示:上述某些方法会影响您的搜索效果。

2020-06-22