elasticsearch - 在ElasticSearch中改善首次索引的方法

标签 elasticsearch

在我的应用程序中,我需要不时重新索引所有数据。我注意到,第一次索引数据(通过批量索引)所花费的时间比随后的重新索引要慢得多。在一种情况下,第一次执行索引大约需要2个小时,而随后的索引大约需要15分钟(索引相同的数据)。

虽然第一次索引需要2个小时,但我很好奇为什么随后的索引重新索引迭代要快得多。而且,我想知道是否有什么我可以做的事情来改善第一次索引时的性能,例如也许通过指示索引将是多大等等。

谢谢,
埃里克

最佳答案

编辑了以删除对merge_factor的引用,因为在ES 2.0中已将删除了它。:https://www.elastic.co/guide/en/elasticsearch/reference/current/breaking_20_setting_changes.html#_merge_and_merge_throttling_settings

正如 Damien 所指出的那样,您确实可以影响(批量)索引设置-完成批量索引后,可以将refresh_interval临时设置为-1,并重新设置为1s的默认值。另一个要修改的设置是merge.policy.merge_factor;将其设置为较高的值,例如30,然后将其设置为默认的10

关于优化批量索引,有许多教程和邮件列表讨论,但是这里有一些正式的文档链接以以下内容开头:

http://www.elasticsearch.org/guide/reference/index-modules/merge/
http://www.elasticsearch.org/guide/reference/api/admin-indices-update-settings/

如果尚未调整JVM的内存设置,则应该进行调整。尽管特定于运行Ubuntu 10.04服务器的512mb VPS,但这些设置(http://pastebin.com/mNUGQCLY)应该为您指明正确的方向。基本上,在启动时将所需数量的RAM分配给Elasticsearch可以改善JVM内存分配/ GC计时。

关于elasticsearch - 在ElasticSearch中改善首次索引的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18323719/

相关文章:

elasticsearch - Apache NIFI-Putelasticsearch-格式错误的内容,在分析后发现了额外的数据:START_OBJECT

logging - 在Logstash中使用日期格式解析时间戳

java - Spring Boot 的 Elasticsearch Searchguard 配置

elasticsearch - Elasticsearch,忽略字段

python - elasticsearch 使用 python 创建或更新文档

java - 使用 Spring-Data Elasticsearch 在 Elasticsearch 中动态创建索引名称

elasticsearch - 可以将特定类型的数据从具有多种类型的索引移动到具有一种类型的索引吗?

elasticsearch - DSL如何查询匹配类型不起作用?

java - 哪个客户端可以在 Java 1.6 中运行并从 Elasticsearch 5.4 进行查询?

php - Elasticsearch中的条件查询