一尘不染

Elasticsearch对1000万个事件的索引编制速度

elasticsearch

我试图弄清楚为什么Elasticsearch在索引编制方面如此之慢。我不确定这是否是Elasticsearch本身的局限性,但我将分享到目前为止的内容。

我有一个elasticsearch节点和一个运行在一个盒子上的logstash实例。我的文档大约有15个字段,并且我有一个具有正确类型的elasticsearch映射设置(尽管我尝试了不使用映射并获得几乎相同的结果)。

我一次将大约8到1千万个事件编入索引,并采用了以下方法。

具有以下格式的批量api(我将csv转换为JSON并将其放入文件中,并在其中卷曲

{"create" : {}}
{"field1" : "value1", "field2" : "value2 .... }
{"create" : {}}
{"field1" : "value1", "field2" : "value2 .... }
{"create" : {}}
{"field1" : "value1", "field2" : "value2 .... }

我还尝试了使用原始csv的tcp输入或使用文件侦听器的logstash,并将csv记录到logstash正在侦听的文件的末尾。

这三种方法似乎每秒都吸收约10,000个事件,这非常慢。

难道我做错了什么?我是否应该在批量提取中明确分配一个ID,而不是让其自动生成一个ID?

通过批量API提取时,我将事件分为50,000个事件文件和100,000个事件文件,并分别提取了每个事件文件。


阅读 290

收藏
2020-06-22

共1个答案

一尘不染

您会发现我在这里对此进行了一些研究,您可以下载Indexing
Scripts文件,该文件包含一些有用的脚本,可最大程度地提高索引性能。实际上,在硬件和Elasticsearch索引优化方面确实有所不同。即删除副本节点等。

希望这对您有所帮助。

2020-06-22