## term没有查到数据分析

match 一般要结合 text 类型一起使用

而 term 要结合 keyword 类型一起使用,这样才是有意义的

这里的理解有些人可能有误区,

"name" : {
          "type" : "text",
          "fields" : {
            "keyword" : {
              "type" : "keyword",
              "ignore_above" : 256
            }
          }

这里的name并不是keyword, name.keyword才是keyword,是不是keyword要看其type

先总结几点:

  1. term查询要查询keyword字段
  2. term搜索词不会分词,也不会normalization化
  3. 源数据会normalization化

这样就会导致无法匹配,甚至你改成小写会有匹配的错视感.

text 类型在创建索引的时候会执行分词,分词过程有一个步骤叫 normalization 也叫文档归一化处理,在这个处理过程中,源数据字段会被统一时态、大小写等,具体还会执行哪些操作取决于你使用了哪个分词器,也就是说你的搜索词会保留大写,而源文档的索引数据会被转换为小写,注意这里说的是倒排索引会被转换为小写,而不是源数据,所以相当于 你用 John 去匹配了 john,所以无法命中

所以一般查询命中情况, 一定要注意分词器情况以及具体type如text和keyword

  • keyword不会被分词,会保留源数据原样
  • text会做文档标准化, 大小写,单复数,时态等等
  • 搜索的分词器和源数据分词器是两回事,一定要注意这个区别
  • term搜索词不分词,保留词源信息
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值