ElasticSearch批量更新索引的优化

1. 多线程程序插入

可以根据服务器情况开启多个线程index,速度可以提高n倍, n>=2

2. 取消replias

如果有多台机器,可以以每台设置n个shards的方式,根据业务情况,可以考虑取消replias
curl -XPUT ‘http://127.0.0.1:9200/dg-test/’ -d ‘{
“settings” : {
“number_of_shards” : 5,
“number_of_replicas” : 0
}
}’
这里设置5个shards, 复制为0,如果需要replicas,可以完成index后再修改为replicas>=1
原文:http://www.elasticsearch.org/guide/reference/api/admin-indices-create-index.html

3. 提高ES占用内存

内存适当调大,初始是256M, 最大32G,
调大后,最小和最大一样,避免GC, 并根据机器情况,设置内存大小,
$ bin/elasticsearch -f -Xmx32g -Xms32g -Des.index.storage.type=memory
原文:http://www.elasticsearch.org/guide/reference/setup/installation.html

4. 减少shard刷新间隔

curl -XPUT ‘http://127.0.0.1:9200/dg-test/_settings’ -d ‘{
“index” : {
“refresh_interval” : “-1”
}
}’

完成bulk插入后再修改为初始值
curl -XPUT ‘http://127.0.0.1:9200/dg-test/_settings’ -d ‘{
“index” : {
“refresh_interval” : “1s”
}
}’

5. 设置一个shard的段segment最大数

可以减少段文件数,提高查询速度
curl -XPOST ‘http://127.0.0.1:9200/dw-search/_optimize?max_num_segments=5
注意:有时候可能需要多次执行
原文:http://www.elasticsearch.org/guide/reference/api/admin-indices-update-settings.html
原文:http://www.elasticsearch.org/guide/reference/index-modules/merge.html

6. 去掉mapping中_all域

Index中默认会有_all的域,这个会给查询带来方便,但是会增加索引时间和索引尺寸
“_all” : {“enabled” : false}
原文:http://www.elasticsearch.org/guide/reference/mapping/all-field.html

7. 设置source为压缩模式或者disable

compress=true这个能大大减少index的尺寸
disable将直接没有_source域

8. 增加merge.policy.merge_factor数

设置merge.policy.merge_factor到30,初始是10
增加这个数需要更多的内存,bulk index可以调大这个值.
如果是即时索引,应该调小这个值
原文:http://www.elasticsearch.org/guide/reference/index-modules/merge.html

参考:

  1. ElasticSearch优化的一些方法
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值