[英]Elasticsearch multiple aggregations from array
如何动态地在一个查询中动态组合多个聚合?
我知道要做“硬编码”:
request.Aggregations = new TermsAggregation("agg_field1") {
Field = "field1"
}
&& new TermsAggregation("agg_field2") {
Field = "field2"
};
但是因为我使用包含字段的数组,所以我需要类似下面的内容。 但我收到编译错误,因为'AggregationDictionary'和'TermsAggregation'不能由运算符'&='组合:
string[] Fields = new[]{ "field1", "field2" }
foreach (string sField in Fields)
{
request.Aggregations &= new TermsAggregation("agg_" + sField)
{
Field = sField
};
}
我有文章数据与“产品”,“品牌”,“模式”等字段。 对于这个字段,我想通过聚合获得每个不同的值。 这是为了显示三个组合框,每个字段的可能值。
您可以通过几种不同的方式构建聚合集合。 离你想做的最近的是
var request = new SearchRequest<object>();
string[] Fields = new[] { "field1", "field2" };
AggregationBase aggregations = null;
foreach (string sField in Fields)
{
var termsAggregation = new TermsAggregation("agg_" + sField)
{
Field = sField
};
if (aggregations == null)
{
aggregations = termsAggregation;
}
else
{
aggregations &= termsAggregation;
}
}
request.Aggregations = aggregations;
client.Search<object>(request);
它构建以下查询
{
"aggs": {
"agg_field1": {
"terms": {
"field": "field1"
}
},
"agg_field2": {
"terms": {
"field": "field2"
}
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.