我在Elasticsearch中使用了称为“复合凝集”的新beta功能。对我而言,主要目的是此聚合的附加滚动功能。我实际上只在一种来源上使用它。
现在,我发现在条件聚合中使用“ min_doc_count”参数会产生错误:
无法解析字段[sources] ...未知字段[min_doc_count]
当我从聚合中删除复合功能时,一切正常。 (包括最小文档数的字词汇总)。仅当在复合聚合中将其声明为源时,它才会失败。
这是一个错误吗?还是我不完全了解复合聚合?
感谢您的任何反馈!
编辑:
{
"aggs" : {
"my_buckets": {
"composite" : {
"sources" : [
{ "product": { "terms" : { "field": "product", "min_doc_count": 2 } } }
]
}
}
}
}
答案 0 :(得分:0)
复合聚合不支持选项min_doc_count。 See here.
答案 1 :(得分:0)
我遇到了与您相同的问题,我发现要通过“min_doc_count”实现过滤器,您必须在当前搜索下使用子聚合。在这个子聚合中,使用“bucket_selector”和“doc_count”过滤的“脚本”,以下面的片段为例(类似于我用来实现我的目标):
GET store_dept_*/_search?
{
"aggs": {
"table": {
"composite": {
"size": 20000,
"sources": [
{
"stk1": {
"terms": {
"field": "store"
}
}
},
{
"stk2": {
"terms": {
"field": "item",
"order": "asc"
}
}
}
]
},
"aggs": {
"filter": {
"bucket_selector": {
"buckets_path": {
"doc_count": "_count"
},
"script": "params.doc_count >= 10 && params.doc_count <= 100"
}
}
}
}
}
}