我選擇了elasticsearch-analysis-lc-pinyin作為拼音分詞插件,它是一款elasticsearch拼音分詞插件,可以支持按照全拼、首字母,中文混合搜索。
elasticsearch-analysis-lc-pinyin一共有兩個版本分別是1.4.5和2.2.2,和es的版本對應
1.4.5 這個版本對應ES1.X
2.2.2這個版本對應ES2.X
請根據需要安裝對應的版本,下面地址中壓縮包已經包含了這兩個版本
安裝插件需要將
elasticsearch-analysis-lc-pinyin的源碼自己maven build出來,這樣可以避免版本沖突
現在網上沒有找到有關2.X的插件安裝和配置介紹,我摸索了很久才完成,這里記錄下:
編譯安裝:
首先是build源碼,使用將目錄切到相應目錄,我的是:
cd F:\software\elasticsearch-analysis-lc-pinyin-dev_2.2.2\elasticsearch-analysis-lc-pinyin
然后執行maven build命令(當然,前提是你安裝了maven,並配置好環境變量)
mvn package
然后就等待他的編譯,完成時會在..\elasticsearch-analysis-lc-pinyin\target\releases目錄下生產一個zip,我們只需將這個zip解壓到elasticsearch的plugin目錄下即可。
配置使用:
lc 2.x是不需要在
elasticsearch.yml里配置的,我們只需要重啟
elasticsearch實例即可。
關鍵就是在於使用上mapping和DSL的配置。
由於elasticsearch 1.x和2.x改動很大,所以我這里直接貼2.x的mapping配置了:
curl -XPUT http://localhost:9200/addr curl -XPOST http://localhost:9200/addr/std/_mapping -d' { "std": { "properties": { "detail_name": { "type": "string", "analyzer": "lc_index", "search_analyzer": "lc_search", "fields": { "cn": { "type": "string", "analyzer": "ik_max_word", "search_analyzer": "ik_max_word" } } }, "door_name":{ "type": "string", "analyzer": "lc_index", "search_analyzer": "lc_search", "fields": { "cn": { "type": "string", "analyzer": "ik_max_word", "search_analyzer": "ik_max_word" } } } } } }'
主要問題是在於,1.x是 index_analyzer 為 lc_index ,但是2.x 沒有了 index_analyzer 這個參數。
接下來就和1.x差不多了。