ElasticSearch搜尋優化的方法
多執行緒程式插入,可以根據伺服器情況開啟多個執行緒index
速度可以提高n倍, n>=2如果有多臺機器,可以以每臺設定n個shards的方式,根據業務情況,可以考慮取消replias
curl -XPUT ‘http://10.1..:9200/dw-search/’ -d ‘{
“settings” : {
“number_of_shards” : 20,
“number_of_replicas” : 0
}
}’
這裡設定20個shards, 複製為0,如果需要replicas,可以完成index後再修改為replicas>=1
原文:http://www.elasticsearch.org/guide/reference/api/admin-indices-create-index.html提高ES佔用記憶體
記憶體適當調大,初始是256M, 最大1G,
調大後,最小和最大一樣,避免GC, 並根據機器情況,設定記憶體大小,
$ bin/elasticsearch -f -Xmx4g -Xms4g -Des.index.storage.type=memory
原文:http://www.elasticsearch.org/guide/reference/setup/installation.html減少shard重新整理間隔
curl -XPUT ‘http://10.1..:9200/dw-search/_settings’ -d ‘{
“index” : {
“refresh_interval” : “-1”
}
}’
完成bulk插入後再修改為初始值
curl -XPUT ‘http://10.1..:9200/dw-search/_settings’ -d ‘{
“index” : {
“refresh_interval” : “1s”
}
}’
去掉mapping中_all域
Index中預設會有_all的域,這個會給查詢帶來方便,但是會增加索引時間和索引尺寸
“_all” : {“enabled” : false}
原文:http://www.elasticsearch.org/guide/reference/mapping/all-field.html
curl -XPOST ‘http://10.1..:9200/dw-search/pt_normal/_mapping’ –data-binary @pt_normal_properties.mapping設定source為壓縮模式或者disable
compress=true這個能大大減少index的尺寸
disable將直接沒有_source域增加merge.policy.merge_factor數
設定merge.policy.merge_factor到30,初始是10
增加這個數需要更多的記憶體,bulk index可以調大這個值.
如果是即時索引,應該調小這個值
原文:http://www.elasticsearch.org/guide/reference/index-modules/merge.html