Elasticsearch 7.11.1 使用multi_terms聚合提示未知类型报错如何解决
问题原因
multi_terms聚合是Elasticsearch 7.12.0版本才正式新增的功能,你当前使用的7.11.1版本没有内置该聚合类型,因此执行查询时会抛出无法识别聚合类型的报错。普通terms聚合是早期版本就支持的功能,所以可以正常运行。
解决方案
你可以根据实际场景选择以下两种方案:
- 方案一:升级Elasticsearch版本到7.12.0及以上
升级完成后无需修改原有查询语法,你编写的multi_terms聚合语句可以直接正常执行。 - 方案二:低版本兼容替代写法
如果暂时无法升级,可以使用painless脚本实现多字段聚合的同等效果,示例查询语句如下:
{ "aggs": { "test_agg": { "terms": { "script": { "source": "doc['JobTitle.keyword'].value + '|' + doc['AboutMe.keyword'].value", "lang": "painless" }, "size": 10 } } } }
注:该写法返回的聚合键为两个字段用分隔符拼接的结果,你也可以使用双层terms嵌套聚合实现按字段分层统计的效果,写法如下:
{ "aggs": { "job_title_agg": { "terms": { "field": "JobTitle.keyword", "size": 10 }, "aggs": { "about_me_agg": { "terms": { "field": "AboutMe.keyword", "size": 10 } } } } } }
内容的提问来源于stack exchange,提问作者Pavel Molchanov
相关产品推荐
相关产品推荐

