当前位置:   article > 正文

ES 字段类型设置导致term查询失效问题_es terms查询不到

es terms查询不到

问题:

es里面有一个字段存储的数据类似 A、B、H这种大写字母,通过term查询不到数据,但是根据match可以查到,后来发现是因为es字段类型设置的问题,因为设置了该字段类型为text类型,导致es对存储的数据建立了分词索引,大写字母都转成小写了,把类型改为keyword就可以了

设置mapping 字段映射

  1. "fieldName": {
  2. "type": "keyword"
  3. }

注意问题

1. 通过es提供的测试分词的接口,我们可以测试各字段的分词情况

  1. get http:/ip/索引名称/_analyze
  2. {
  3. "field":"firtname", #要进行分析的索引中的字段
  4. "text":"DNF" #要进行分析的文本内容
  5. }

2. ES 字段类型keyword和text的区别和选择

  1. keyword:存储数据时候,不会分词建立索引
  2. text:存储数据时候,会自动分词,并生成索引

创建es索引是最好先设置好每个字段的类型和使用的分词索引,如果不需要分词查询,设置字段类型为keyword最好,例如商品id、编号之类的;

如果需要分词查询,就设置为text类型,并且指定分词器,例如商品名称、商品标签、关键字等等;

设置字段类型和使用的分词器:

  1. "fieldName": {
  2. "type": "text", #字段类型为text
  3. "analyzer":"ik_max_word" #ik中文分词器
  4. }

注意:设置字段类型为text后,es建立的分词索引会把大写字母转换为小写,通过term精确匹配就匹配不到

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/blog/article/detail/45940
推荐阅读
相关标签
  

闽ICP备14008679号