ElasticSearch(Nest)中的聚合

7

我是一个新手,对Elasticsearch并不熟悉,目前还没有找到相关问题的答案。如果已经有了解决方案,请提前谅解并帮助指引正确的方向。

我正在寻找一种在NEST中实现以下功能的方法:

"aggs" : {
    "fieldA" : {
        "terms" : {
            "field" : "fieldA"

        }
    },

    "fieldB" : {
        "terms" : {
            "field" : "fieldB"

        }
    }
}

我尝试过以下方法:
.Aggregations(q => q.Terms("fieldA", r => r.Field(s => s.fieldA)) && q.Terms("fieldB", r => r.Field(s => s.fieldB)))

还有这个:

.Aggregations(q => q.Terms("fieldA", r => r.Field(s => s.fieldA)))
.Aggregations(q => q.Terms("fieldB", r => r.Field(s => s.fieldB)))

这两个都没能工作。我还遗漏了什么吗?
1个回答

19
您可以这样指定多个聚合:
.Aggregations(a => a
    .Terms("fieldA", t => t.Field(s => s.FieldA))
    .Terms("fieldB", t => t.Field(s => s.FieldB))
)

每个聚合描述符在内部将自己添加到字典中(使用聚合名称作为键),然后返回自身,以便您可以不断添加更多内容。
对于NEST中的聚合缺乏文档表示歉意。我们正在重新设计文档,并确保包括上述用例的示例。

1
它非常好用,谢谢!期待未来更多的文档。 - Sum NL
感谢@greg的答案,我原以为它会像布尔过滤器一样工作:.Aggregations(a => a.Terms("fieldA", t => t.Field(s => s.FieldA)), b => b.Terms("fieldB", t => t.Field(s => s.FieldB)) ) - jhilden

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接