目的:實現淘寶、京東搜索建議功能html
準備環境:安裝elasticsearch, 並安裝拼音插件(https://github.com/medcl/elasticsearch-analysis-pinyin)。我安裝的環境爲當前最新版6.2.4。git
參考官網教程:https://www.elastic.co/guide/en/elasticsearch/reference/current/search-suggesters-completion.htmlgithub
docker中安裝:docker exec -it elastic-search /bin/bashdocker
elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-pinyin/releases/download/v6.4.1/elasticsearch-analysis-pinyin-6.4.1.zipbash
不一樣的地方是要整合拼音進去。app
一、建立Indexelasticsearch
PUT suggesteride
{ "index" : { "analysis" : { "analyzer" : { "pinyin_analyzer" : { "tokenizer" : "my_pinyin" } }, "tokenizer" : { "my_pinyin" : { "type" : "pinyin", "keep_separate_first_letter" : true, "keep_original" : true } } } } }
二、建立Mapping(type要相同)測試
POST /suggester/User/_mappingui
{ "User" : { "properties" : { "suggest" : { "type" : "completion", "analyzer":"pinyin_analyzer" }, "title" : { "type": "completion", "analyzer":"pinyin_analyzer" } } } }
三、添加測試數據
PUT /suggester/User/1
{ "title":"我是帥哥", "suggest":"今天我要出去耍" }
PUT /suggester/User/2
{ "title":"我是美女", "suggest":"今天我不出去耍" }
四、搜索
POST /suggester/_search
{ "suggest": { "song-suggest" : { "prefix" : "wos", "completion" : { "field" : "title" } } } }
結果