ES优化总结(特别是在bulk大量数据到ES的时候),持续续更新中。。。。

来源:互联网 发布:java并发编程 用途 编辑:程序博客网 时间:2024/05/16 19:49

1、refresh时间间隔

优化点: 减少刷新频率,降低潜在的写磁盘性能损耗, 默认的刷新时间间隔是1s,对于写入量很大的场景,这样的配置会导致写入吞吐量很低,适当提高刷新间隔,可以提升写入量,代价就是让新写入的数据在60s之后可以被搜索,新数据可见的及时性有所下降。
在bulk大量数据到ES集群的时候可以关闭刷新频率,把其值设置为-1就是关闭了刷新频率,在导入完之后设置成合理的值即可,例如30s或者60s即可。

curl -XPUT '192.168.2.181:9200/index/_settings?pretty' -d '{    "index" : {        "refresh_interval" : "-1"    }}'

2、replica数目设置

在bulk大量数据到ES集群的可以把副本数设置为0,在数据导入完成之后再设置为1或者你集群的适合的数目。

curl -XPUT '192.168.2.181:9200/index/_settings?pretty' -d '{    "index" : {        "number_of_replicas" : 0    }}'

3、merge相关参数

参考官网建议:https://www.elastic.co/guide/en/elasticsearch/reference/1.7/index-modules-merge.html"index.merge.policy.floor_segment": "100mb"
"index.merge.scheduler.max_thread_count": "1"
"index.merge.policy.max_merged_segment":"100m"

curl -XPUT '192.168.2.181:9200/index/_settings?pretty' -d '{ "index.merge.policy.floor_segment": "100mb", "index.merge.scheduler.max_thread_count": "1", "index.merge.policy.max_merged_segment":"100m"}'

4、Translog优化建议 参考官网:https://www.elastic.co/guide/en/elasticsearch/reference/1.7/index-modules-translog.html#index-modules-translog

{   "index.translog.flush_threshold_size": "100m"}

5、修改配置文件调整ES的JVM内存大小

这个值不能超过32g,一般机器好点设置成十几个g速度就非常快了。具体要看自己机器的内存(使用free命令查看,千万不要超过自己机器内存啦,balala..)

vim config/jvm.options

-Xms12g-Xmx12g

6、去掉mapping中_all字段

Index中默认会有_all这个字段,默认会把所有字段的内容都拷贝到这一个字段里面,这样会给查询带来方便,但是会增加索引时间和索引尺寸。

"_all":{"enabled":false}

例如:

{    "myindex":{        "mappings":{            "snapshot":{                "_all":{                    "enabled":false                },                "properties":{                    "AltWeightedAvgBidPx":{                        "type":"long"                    },                    "AltWeightedAvgOfferPx":{                        "type":"long"                    }                }            }        }    }}

7、

原创粉丝点击