您现在的位置是:首页 > 文章详情

Elasticsearch 大文本字段中的中文精确查询

日期:2018-11-06点击:252

中文精确查询用Elasticsearch怎么做? Google了不少文章,个人觉得没有抓住重点,或者Elasticsearch升级后有所改变。

背景介绍

前人精品文章推荐
简单来讲,从Elasticsearch设计的初衷来讲, match查询用来做搜索引擎类似的评分查询,精确匹配查询用term来做,参见各种Elasticsearch的手册,不展开。中文的精确查询由于存在index保存阶段的分词和search阶段的分词,所以直接沿用这些方法并不适用。

问题:中文查询用match能查到,用term查不到。

准确的说是比如字段 title:北京奥运 , 查找 “北京奥运” ok, 查找 “北京” 没有,查找"北"在默认情况下可以找到很多。

解决办法: 采用term查询里面的wildcard query

GET /_search { "query": { "wildcard" : { "user" : "ki*y" } } }

注意事项

Elasticsearch 6.0版本 Text字段 不再提供 not_analysed 属性,请改用keyword类型, 字段长度受限: Lucene's term byte-length limit of 32766 。中文utf8字符串长度 32766/4=8190+ 比较保险。

原文链接:https://yq.aliyun.com/articles/665510
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章