【发布时间】:2017-04-04 14:51:48
【问题描述】:
我们使用 ElasticSearch 2.x 已经有一段时间了。一切都完美地满足了我们的要求,除了一个弱点:写入/索引到 ElasticSearch 集群的性能不是很好。
在我们的例子中,我们有 8 个节点的 ES 集群,我们在 ES 中放入了 100~ 个字段范围的索引。索引速度约为每分钟 50,000 个,这对于我们的场景来说太慢了。我们已经尝试了 www.elastic.co 推荐的所有调优方法。我们发现最快的方法是将 json 有效负载构造为文件,然后使用批量 API 将它们转储到 ES 中。但是,索引速度还是太慢了。
我见过一些 ES-Hadoop 连接器,elasticsearch 也有 spark 支持,您可以使用 saveToES() 将 RDD 保存到 ES。我怀疑他们都在下面使用 ES bulk API。任何人都可以分享一些关于他们的经验吗?在 ElasticSearch 中编写索引的最快方法是什么?
【问题讨论】:
-
您提供的信息不相关。您的集群是否与索引速度有关,或者您是否也在进行繁重或频繁的搜索?你尝试过哪些“调优方法”?
-
@AndreiStefan 我的问题实际上是关于是否有任何其他方法可以比批量 API 更快地将数据加载到 ES 中?
-
无论你在ES之外使用什么第三方工具,一切都需要使用ES的方式放入数据。无论是Spark,Logstash,你自己的应用程序都需要以一种方式使用批量或索引api或其他。这里没有后门魔法。
-
我知道的最快的方法是批量 API。
-
@AndreiStefan 我们尝试在加载索引时禁用副本,并且还使用了批量 API,也包括 refresh_interval=-1。虽然我们向 ES 大量写入数据,但我们确保几乎没有其他针对集群的 r/w。我应该尝试任何其他调整来提高索引性能。
标签: elasticsearch