indexing - 如何优化Elasticsearch的索引编制?

标签 indexing elasticsearch lucene

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

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

  • 所以我的问题是,如何使用这6台机器优化写入操作?
  • 是否应将机器分为两部分,例如indexA的3台机器和indexB的3台机器?

  • 我是否应该全部使用6台机器来索引indexAindexB

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

  • 先感谢您

    最佳答案

    这取决于,但让我根据您的问题陈述作出指示,得出以下假设:

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

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

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

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

    如有,请转到index warmers

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

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

    最后阅读this

    请注意:上述某些方法会影响您的搜索效果。

    关于indexing - 如何优化Elasticsearch的索引编制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29896332/

    相关文章:

    ElasticSearch - 如何在聚合查询中显示附加字段名称

    java - 我可以在 Lucene 查询字符串中做 count (*) 吗?

    java - 如何使用 Lucene 将 LowerCase 应用于字符串

    mysql - 在启动 apache solr 之前我应该​​知道什么?

    sql - 如何有效地查询具有修订值的表?

    python - 重新索引错误没有意义

    JSON 的 MySql 索引

    "or"语句中的 MySQL 索引

    python - NameError:未定义名称 '` Timevalue`

    elasticsearch - 是否必须为要使用ElasticSearch搜索的所有索引创建POCO对象?