代码之家  ›  专栏  ›  技术社区  ›  Mikail

如何将特定的elasticsearch dsl查询转换为嵌套查询?

  •  0
  • Mikail  · 技术社区  · 6 年前

    如何将下面的DSL查询转换为c#NEST查询?

    GET project/_search
    {
      "size": 0, 
      "aggs": {
      "group_by_projectId": {
          "filter": {
          "terms": {
             "projectId.keyword": ["1", "2", "18"]
           }
        },
        "aggs": {
          "project_tags": {
          "terms": {
            "field": "projectId.keyword",
            "size": 100
         },
          "aggs": {
            "last_process_time": {
              "max": {
                "field": "processedAt"
              }
            }
           }
          }
         }
        }
       }
     }
    

    有人能帮我做一下nest查询吗?提前谢谢你。

    1 回复  |  直到 6 年前
        1
  •  2
  •   Mikail    6 年前

    我已将查询转换为以下内容,它运行得非常好:

    _elasticClient.SearchAsync<Project>(s => s
                    .Size(0)
                    .Aggregations(a => a
                        .Filter("filter_by_projectId", f => f
                            .Filter(ff => ff
                                .Terms(t => t
                                    .Field(tf => tf.ProjectId)
                                    .Terms(projects
                                        .Select(ps => ps.Id))))
                            .Aggregations(agg => agg
                                .Terms("group_by_projectId", st => st
                                    .Field(o => o.ProjectId.Suffix("keyword"))
                                    .Size(100)
                                    .Aggregations(aa => aa
                                        .Max("last_process_time", sa => sa
                                            .Field(o => o.ProcessedAt))))))));