我的文档包含一个整数数组字段,存储描述它们的标记的id。给定一个特定的标签ID,我想提取一个最常出现的顶级标签列表和提供的标签。
我可以解决这个问题,将术语聚合与标记ID字段相关联到同一字段上的术语过滤器,但我回来的列表显然始终以我提供的相册ID:与我的过滤器匹配的所有文档都有该标记,因此它是列表中的第一个。
我虽然using the exclude
field避免创建有问题的存储桶,但是当我处理整数字段时,这似乎是不可能的:此查询
{
"size": 0,
"query": {
"term": {
"tag_ids": "00001"
}
},
"aggs": {
"tags": {
"terms": {
"size": 3,
"field": "tag_ids",
"exclude": "00001"
}
}
}
}
返回错误,说明Aggregation [tags] cannot support the include/exclude settings as it can only be applied to string values
。
是否有可能避免收回这个桶?
答案 0 :(得分:3)
从Elasticsearch 1.4开始,这是ES本身的一个缺点。
community proposed此更改后,the functionality has been added将包含在Elasticsearch 1.5.0中。
答案 1 :(得分:0)
自1.5.0版开始,它应该被修复。 看看这个:https://github.com/elasticsearch/elasticsearch/pull/7727
答案 2 :(得分:0)
虽然修复它是有道理的:我的解决方法是让聚合使用脚本而不是直接访问该字段,并让该脚本将该值用作字符串。 效果很好,没有可测量的性能损失。