1. 程式人生 > >ElasticSearch搜尋優化的方法

ElasticSearch搜尋優化的方法

  1. 多執行緒程式插入,可以根據伺服器情況開啟多個執行緒index
    速度可以提高n倍, n>=2

  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

  3. 提高ES佔用記憶體
    記憶體適當調大,初始是256M, 最大1G,
    調大後,最小和最大一樣,避免GC, 並根據機器情況,設定記憶體大小,
    $ bin/elasticsearch -f -Xmx4g -Xms4g -Des.index.storage.type=memory
    原文:http://www.elasticsearch.org/guide/reference/setup/installation.html

  4. 減少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”
}
}’

  1. 去掉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

  2. 設定source為壓縮模式或者disable
    compress=true這個能大大減少index的尺寸
    disable將直接沒有_source域

  3. 增加merge.policy.merge_factor數
    設定merge.policy.merge_factor到30,初始是10
    增加這個數需要更多的記憶體,bulk index可以調大這個值.
    如果是即時索引,應該調小這個值
    原文:http://www.elasticsearch.org/guide/reference/index-modules/merge.html