栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

ES中解决模糊搜索的时候搜索一个中文可以,两个以上中文就不行的情况

ES中解决模糊搜索的时候搜索一个中文可以,两个以上中文就不行的情况

刚学ES,踩坑是真的多 我在使用Elasticsearch创建索引的时候,并没有用代码实现,而是使用的logstash去读取配置文件来生成,这个坑就埋下了,创建索引的时候没有指定字段的类型,所以在查询的时候,用wildcard去匹配的时候发现了问题, 我在匹配英文的时候,可以写多个关键词,比如我有一条字段名为name,值为lmj的数据,我去搜索"l*"和"lm*"都可以将数据检索出来,而如果有一条字段名为name,值为芜湖大司马的数据,用"芜*"可以检索出,用"芜湖*"就不能检索出了,因为用的wildcard去匹配,我在想是不是这个不能匹配多个,后面去到处找解决办法,发现了一篇文章,提示说类型不同,分词的问题,然后我检索的时候用的 {
          "wildcard": {
            "name.keyword": "*芜湖*"
         } }

这里放一个索引状态的截图

 可以看出这个NAME的type为text,因为没有用分词器,所以会有这个问题

这个就可以检索出想要的数据,注意,我这里用的*芜湖* ,不建议将* 放在最前面,会影响性能。

总结:

创建索引没有定义字段的type,查中文的时候需要在字段名后面加上.keyword。

这里把大佬的文章放在这里:

ES中如何实现like模糊查询_弹指天下-CSDN博客_es 模糊查询

这里还有大佬对我这个问题的详解:

es ElasticSearch 中文分词 - 一个人的孤独自白 - 博客园 (cnblogs.com)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/583223.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号