es 聚合提示 Fielddata is disabled on text fields by default.

解决

在查询的字段名加 .keyword

如原来的字段名为 xxxx.xxxxx 则在查询时指定字段名为 xxxx.xxxx.keyword

背景

ES新手一枚,查询数据时报错如题

网上查了一通之后,发现大多是如下文:
es进行聚合操作时提示Fielddata is disabled on text fields by default

可惜我是新手,上文的方案应该是完美且正确的解决方案,但是貌似是在 mapping 上进行操作,于是我就接着查,查啊查,查到了下文:
GET查询,加.keyword与不加.keyword的区别是什么,为什么没有结果
也就是本文的解决办法。

原因

对于es而言,新的版本取消了 string 类型,拆分类型为 textkeyword 两种类型。

那前面提到的mapping是什么呢?反正就是类似于一个映射,指定类型的东西,没有指定怎么办?动态猜测呗。所以 "12" 认为是 long"192.168.0.1" 认为是 ip 类型。

看下区别,也就知道为什么要加 keyword 了:

对 text 类型的字段会先做分词处理之后再匹配,所以做 term 查询是得不到结果的,而 keyword 则是对结果做精确匹配,可以进行 term 聚合

今天是2019-11-02号,周末,小雨,学习 & 加班 ing…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值