M's*_*ph' 9 filtering aggregation elasticsearch
我对弹性搜索世界很新.
假设我在两个字段上有一个嵌套聚合:field1和field2:
{
...
aggs: {
field1: {
terms: {
field: 'field1'
},
aggs: {
field2: {
terms: {
field: 'field2'
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
这段代码完美无缺,给我这样的东西:
aggregations: {
field1: {
buckets: [{
key: "foo",
doc_count: 123456,
field2: {
buckets: [{
key: "bar",
doc_count: 34323
},{
key: "baz",
doc_count: 10
},{
key: "foobar",
doc_count: 36785
},
...
]
},{
key: "fooOO",
doc_count: 423424,
field2: {
buckets: [{
key: "bar",
doc_count: 35
},{
key: "baz",
doc_count: 2435453
},
...
]
},
...
]
}
}
Run Code Online (Sandbox Code Playgroud)
现在,我需要排除所有聚合结果,doc_count例如小于1000,并改为:
aggregations: {
field1: {
buckets: [{
key: "foo",
doc_count: 123456,
field2: {
buckets: [{
key: "bar",
doc_count: 34323
},{
key: "foobar",
doc_count: 36785
},
...
]
},{
key: "fooOO",
doc_count: 423424,
field2: {
buckets: [{
key: "baz",
doc_count: 2435453
},
...
]
},
...
]
}
}
Run Code Online (Sandbox Code Playgroud)
是否可以在查询体中设置此需求?或者我是否必须在调用者布局中执行过滤器(在我的情况下是javascript)?
提前致谢
M's*_*ph' 22
下一次,M'sieur Toph':RTFM !!!
我觉得自己很愚蠢:在询问后30秒,我在手册中找到了anwser.我不删除我的问题,因为它可以帮助,谁知道......
这是anwser:
您可以min_doc_count在terms聚合中指定属性.
它给你:
{
...
aggs: {
field1: {
terms: {
field: 'field1',
min_doc_count: 1000
},
aggs: {
field2: {
terms: {
field: 'field2',
min_doc_count: 1000
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
您还可以为聚合的每个级别指定特定的最小计数.
还有什么 ?:)
| 归档时间: |
|
| 查看次数: |
4660 次 |
| 最近记录: |