ES使用聚合查询报错exception [type=search_phase_execution_exception, reason=all shards failed]

本文探讨了在使用Elasticsearch进行聚合查询时遇到的`search_phase_execution_exception`错误,原因在于尝试使用非keyword类型的字段进行term查询。解决方法包括确保查询字段为keyword类型并添加`.keyword`后缀,以及为字段启用fielddata。Elasticsearch 5.0以后,string类型被替换为text和keyword,text类型用于全文搜索,keyword用于关键词搜索。由于text类型字段的fielddata默认设为false,因此在聚合操作中需要显式开启fielddata以进行分组和排序。
摘要由CSDN通过智能技术生成

首先看聚合查询写的代码
在这里插入图片描述
聚合查询 使用的是tags这个字段分组查询,使用term查询。
term查询的话必须查询的字段是keyword类型,而且在java代码后面需要加入.keyword。
text是全文检索,会分词,而keyword不分词查询。
在这里插入图片描述
然后在对应字体加入fielddata=true。

ElasticSearch 5.0以后,string类型有重大变更,移除了string类型,string字段被拆分成两种新的数据类型: text用于全文搜索的,而keyword用于关键词搜索。

ElasticSearch字符串将默认被同时映射成text和keyword类型,将会自动创建下面的动态映射(dynamic mappings):

{
   

    "foo": {
   

        "type": 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值