elasticSearch查询数据,模糊搜索无法查询出来

在Elasticsearch中,当使用字段a进行查询时,能看到字段b的内容,但直接模糊匹配字段b却无法查询到数据。这可能是由于在设置字段存储时,`ignore_above`属性的值设置过小,导致超过该长度的b字段数据未被索引。为解决此问题,需调整`ignore_above`属性至合适的长度,如改为20以上。请注意,修改后仅新索引的数据会受影响,历史数据仍无法查询到。
摘要由CSDN通过智能技术生成

背景:

es在查询数据的时候,使用a字段查询可以看到b字段是有内容的,但是模糊匹配b字段,是查询不到数据的。

复现事件经过

第一种正常: select * from table where a like "%%";

结果,明显看到b存在内容:我是b字段

{

"a":"我是a字段",

"b":"我是b字段"

}

第二种不正常:select * from table where b like "%%";

没有命中

思考:

这是不是很不合理?

对不合理!

我有内容,你凭啥不查出来

原因:

设置es存储字段的时候有个ignore_above属性有问题,如果设置的过短,将会导致超过这个长度的数据都不被索引,所以查不出来

解决:

把ignore_above改长,解决问题。

这里还有个注意的点,被索引的数据也是从修改之后被索引,历史的数据仍然查不到

PUT my_index
{
  "mappings": {
    "my_type": {
      "properties": {
        "message": {
          "type": "keyword",
          "ignore_above": 20 
        }
      }
    }
  }
}

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值