ElasticSearch中的聚合(Nest)

时间:2014-07-25 10:11:14

标签: c# elasticsearch aggregation nest

我对弹性搜索很新,我还没有找到具体的问题。如果已经回答,我会提前道歉,我希望你能指出我正确的方向。

我一直在寻找在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 个答案:

答案 0 :(得分:16)

您可以指定多个聚合,如下所示:

.Aggregations(a => a
    .Terms("fieldA", t => t.Field(s => s.FieldA))
    .Terms("fieldB", t => t.Field(s => s.FieldB))
)

每个聚合描述符在内部将自身添加到字典中(使用agg名称作为键),然后返回自身,以便您可以不断添加更多。

对于在NEST中缺乏关于aggs的文档表示道歉。我们正在修改文档,我们一定要包含上述用例的示例。