elasticsearch 在DSL语法中嵌套多个术语,elasticsearch,nest,dsl,elasticsearch,Nest,Dsl" /> elasticsearch 在DSL语法中嵌套多个术语,elasticsearch,nest,dsl,elasticsearch,Nest,Dsl" />

elasticsearch 在DSL语法中嵌套多个术语

elasticsearch 在DSL语法中嵌套多个术语,elasticsearch,nest,dsl,elasticsearch,Nest,Dsl,我正在尝试将以下查询转换为嵌套DSL语法: { "aggs": { "color": { "terms": { "field": "Color" } }, "weight": { "terms": { "field": "Weight

我正在尝试将以下查询转换为嵌套DSL语法:

{
  "aggs": {
    "color": {
      "terms": {
        "field": "Color"
      }
    },
    "weight": {
      "terms": {
        "field": "Weight"
      }
    }
  }
}
每个术语都来自包含名称和字段ID的列表。到目前为止,我已经做到了:

  var request2 = _client.Search<T>(s => s
               .Aggregations(aggs =>
                   aggs.Terms("Weight", x => x.Field("Weight")).Terms("Color", x => x.Field("Weight"))));



我想使用对象初始值设定项语法会更好,但是我更愿意在dsl中使用它。

类似于以下内容的东西会起作用

var client = new ElasticClient();

var fields = new List<string>
{
    "color",
    "weight",
    "foo",
    "bar"
};

var response = client.Search<object>(s => s
    .Aggregations(aggs =>
    {
        foreach (var field in fields)
        {
            aggs.Terms(field, t => t.Field(field));
        }

        return aggs;
    })
);

这看起来正是我要找的,明天将进行测试并报告。非常感谢。
var client = new ElasticClient();

var fields = new List<string>
{
    "color",
    "weight",
    "foo",
    "bar"
};

var response = client.Search<object>(s => s
    .Aggregations(aggs =>
    {
        foreach (var field in fields)
        {
            aggs.Terms(field, t => t.Field(field));
        }

        return aggs;
    })
);