1.安裝smartcn瀏覽器
執行命令:安全
sh elasticsearch-plugin install analysis-smartcn
安裝成功elasticsearch
[es@localhost bin]$ sh elasticsearch-plugin install analysis-smartcn -> Downloading analysis-smartcn from elastic [=================================================] 100% -> Installed analysis-smartcn
在pluins文件夾下會有analysis-smartcn文件夾post
重啓es服務(若是是集羣中,須要每一個節點都安裝,而後所有重啓)ui
驗證: 在瀏覽器中輸入:http://192.168.15.38:9200/_analyze/code
參數token
{ "analyzer": "smartcn", "text": "我是中國人" }
請求方式:post接口
結果:get
{ "tokens": [ { "token": "我", "start_offset": 0, "end_offset": 1, "type": "word", "position": 0 } , { "token": "是", "start_offset": 1, "end_offset": 2, "type": "word", "position": 1 } , { "token": "中國", "start_offset": 2, "end_offset": 4, "type": "word", "position": 2 } , { "token": "人", "start_offset": 4, "end_offset": 5, "type": "word", "position": 3 } ] }
2.Java接口使用smartcn分詞器查詢it
要指定分詞器:analyzer("smartcn")方法
SearchRequestBuilder srb = client.prepareSearch("film2").setTypes("dongzuo"); //組合多條件查詢01 QueryBuilder requestBuilder = QueryBuilders.matchQuery("desc", "非洲迷宮").analyzer("smartcn"); SearchResponse response = srb.setQuery(requestBuilder).setFetchSource(new String[]{"title", "desc"}, null).execute().actionGet(); SearchHits hits = response.getHits(); for (SearchHit hit : hits) { System.out.println(hit.getSourceAsString()); }
執行結果:
smartcn會對查詢的內容進行分詞:"非洲"、"迷宮",而後去desc中查詢符合分詞的數據
{"title":"移動迷宮3:死亡解藥","desc":" 《移動迷宮3》做爲系列最終章,沿襲系列一向以來的勁爆動做戲和快節奏跑酷風,主要講述迪倫·奧布萊恩飾演的托馬斯率領的好萊塢「跑男團」在經歷了迷宮逃脫和末日喪屍的生死考驗後,終於迎來最後的正邪較量。 "} {"title":"戰狼2","desc":"故事發生在非洲附近的大海上,主人公冷鋒(吳京 飾)遭遇人生滑鐵盧,被「開除軍籍」,本想漂泊一輩子的他,正當他打算這麼作的時候,一場突如其來的意外打破了他的計劃,忽然被捲入了一場非洲國家叛亂,本可
同時對多個字段進行查詢,例如查詢title和desc符合查詢內容的數據:
SearchRequestBuilder srb = client.prepareSearch("film2").setTypes("dongzuo"); //組合多條件查詢01 // QueryBuilder requestBuilder = QueryBuilders.matchQuery("desc", "非洲迷宮").analyzer("smartcn"); QueryBuilder requestBuilder = QueryBuilders.multiMatchQuery("星球大戰非洲迷宮","title","desc").analyzer("smartcn"); SearchResponse response = srb.setQuery(requestBuilder).setFetchSource(new String[]{"title", "desc"}, null).execute().actionGet(); SearchHits hits = response.getHits(); for (SearchHit hit : hits) { System.out.println(hit.getSourceAsString()); }
對查詢內容分詞:"星球大戰","非洲","迷宮"
查詢結果:
{"title":"移動迷宮3:死亡解藥","desc":" 《移動迷宮3》做爲系列最終章,沿襲系列一向以來的勁爆動做戲和快節奏跑酷風,主要講述迪倫·奧布萊恩飾演的托馬斯率領的好萊塢「跑男團」在經歷了迷宮逃脫和末日喪屍的生死考驗後,終於迎來最後的正邪較量。 "} {"title":"戰狼2","desc":"故事發生在非洲附近的大海上,主人公冷鋒(吳京 飾)遭遇人生滑鐵盧,被「開除軍籍」,本想漂泊一輩子的他,正當他打算這麼作的時候,一場突如其來的意外打破了他的計劃,忽然被捲入了一場非洲國家叛亂,本能夠安全撤離,卻因沒法忘記曾經爲軍人的使命,孤身犯險衝回淪陷區,帶領身陷屠殺中的同胞和難民,展開生死逃亡。隨着鬥爭的持續,體內的狼性逐漸復甦,最終孤身闖入戰亂區域,爲同胞而戰鬥。"} {"title":"星球大戰8:最後的絕地武士","desc":"《星球大戰:最後的絕地武士》承接前做《星球大戰:原力覺醒》的劇情,講述第一軍團全面侵襲之下,蕾伊(黛西·雷德利 Daisy Ridley 飾)、芬恩(約翰·博耶加 John Boyega 飾)、波·