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 饰)、波·