Elasticsearch过滤最小文档计数的聚合

M's*_*ph' 9 filtering aggregation elasticsearch

我对弹性搜索世界很新.

假设我在两个字段上有一个嵌套聚合:field1field2:

{
    ...
    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_countterms聚合中指定属性.

它给你:

{
    ...
    aggs: {
        field1: {
            terms: {
                field: 'field1',
                min_doc_count: 1000
            },
            aggs: {
                field2: {
                    terms: {
                        field: 'field2',
                        min_doc_count: 1000
                    }
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

您还可以为聚合的每个级别指定特定的最小计数.

还有什么 ?:)