indexing - Elasticsearch批量索引变慢

标签 indexing elasticsearch bulk

我在将文档建立索引到ElasticSearch中受阻。我试图将(仅)约370万个文档索引到一个ES索引中,并将约340万个文档(约占3GB磁盘空间)编入索引之后,索引速率已降至约10个文档/分钟,这非常令人担忧。

索引(错误地)只有一个分片,我认为这可能会导致某个地方的瓶颈。

Elasticsearch版本:1.7.1

节点配置:

m3.large (7.5 GB RAM, 32 GB SSD storage)
ES_Heap_size: 1 GB (this is what I see on KOPF, which also shows Heap usage: ~400MB out of ~1008MB)
50GB EBS volume attached with each node



我们正在使用TransportClient与ES进行交互。 BulkProcessor已配置为5 MB的大容量,2分钟的刷新间隔(为避免发送小于5 MB的数据,我们正在批量索引)和6个并发请求。与ES并行可以有大约10个批量请求。

看到索引编制速度放慢之后,我执行了以下操作:


> Changed the cluster setting to threadpool.bulk.size of 2 & threadpool.bulk.queue_size: 80.
> Turned off index refreshes for my index.
> Set number_of_replicas to 0 (earlier it was 1).
> indices.store.throttle.type has also been set to "none" to avoid indexing throttling while segment merges.



以上均无济于事。

KOPF仪表板显示的CPU使用率不到14%。

请帮忙。谢谢!

最佳答案

我使用了Bulkprocessor,并插入了大约7百万(150秒)的记录,但是从ES端的任何 Angular 都没有观察到速度慢。
我使用了使用传输客户端以Java实现的BulkProcessor(单线程)。其余的配置几乎相同。

如果上述结果令人信服,那么也许您可以尝试以下几件事:

  • 检查程序代码的运行时内存使用率(正在读取/处理/写入的位置)。它可能正在接触最大可用内存。如果是Java,请检查已分配给该程序的Java堆。
  • 尝试使用多节点配置(我在单个Windows m / c上使用三个节点ES群集)
  • 尝试使用多个分片。 (我使用了5个分片)
  • 尝试将ES堆大小增加到1.5 GB左右
  • 关于indexing - Elasticsearch批量索引变慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32845767/

    相关文章:

    java - 如何使用 Twilio Java SDK 发送批量短信?

    PostgreSQL 概率 : EXPLAIN on CREATE INDEX

    mongodb - 如何扩展定制的分析引擎?

    c# - 使用Nest + C#在 Elasticsearch 中查找具有空字段/附件的文档

    python - 使用Python API通过映射将CSV加载到Elasticsearch索引

    php - 从多个文件夹中批量插入图像(文件夹中包含图像)将不起作用

    java - 使用第一个字符并删除空格的基本 Java 字符串

    mongodb - 如何改进 MongoDB 中的地理空间查询

    arrays - 帕斯卡 : Get Length of array[x]

    elasticsearch - 在 logstash.conf 文件中加密/保护 Elasticsearch 的密码