elasticsearch bulkload性能问题

时间:2019-08-17 12:56:58

标签: elasticsearch bulk-load

我们要提高批量加载的速度。

现在,我们使用JAVA将文档批量加载到Elasticsearch。我们计划导入1000万个文档,每个文档的大小接近800万。现在,我们每天只能导入40万个文档/每秒导入5个文档。 我们的ES基础架构是3个具有4G ES_JAVA_OPTS(堆大小)的主节点,2个数据节点和2个具有2G内存的客户端节点。当我想提高批量加载的速度时,我们将解决堆大小问题。我们在Kubernetes上建立了es集群。 I / O在下面。

TypeId

有什么建议可以改善吗?

dd if=/dev/zero of=/data/tmp/test1.img bs=1G count=10 oflag=dsync
10737418240 bytes (11 GB) copied, 50.7528 s, 212 MB/s

dd if=/dev/zero of=/data/tmp/test2.img bs=512 count=100000 oflag=dsync
51200000 bytes (51 MB) copied, 336.107 s, 152 kB/s

超过堆大小

1 个答案:

答案 0 :(得分:0)

似乎为数据节点需要更多的内存.10m文档(每个8m)将消耗大量内存,并且可以减少主节点的内存并添加数据节点,主节点比数据节点需要更少的内存,如果没有更多的节点,您可以将客户端节点与数据节点组合在一起,更多的数据节点可以分担压力。 其他一些建议: 1.在建立索引时,通过将index.refresh_interval设置为-1并将index.number_of_replicas设置为0来禁用刷新。 2.为您的索引设置一个映射,不要使用默认映射,例如:有些字段可以是整数,不需要使用long,有些字段可以是文本,但永远不会使用关键字,有些字段仅用作文本

[官方给出的分度索引速度] [1] https://www.elastic.co/guide/en/elasticsearch/reference/master/tune-for-indexing-speed.html

相关问题