• NEST


    question:

    How can I do multiple nested aggregation?

    I have tried something like this:

    Aggregations(x => x
                      .Nested("Facets", y => y.Path("categories")
                        .Aggregations(r => r.Terms("categories", w => w.Field(q => q.Categories.FirstOrDefault().Id))
                      )).Nested("Facets2", s => s.Path("brand")
                        .Aggregations(e => e.Terms("brand", w => w.Field(q => q.Brand.Id))
                      )));
    

    But it returns Facets2 as a child of Facets

    Can anyone help?

    Answer:

    The aggregations that you have work as expected with NEST client version 1.7.1 as demonstrated with this example

    void Main()
    {
        var settings = new ConnectionSettings();
        var connection = new InMemoryConnection(settings);
        var client = new ElasticClient(connection : connection);
    
        var response = client.Search<Example>(s => s
            .Aggregations(aggs => aggs
                .Nested("Facets", nested => nested
                    .Path(p => p.Categories)
                    .Aggregations(r => r
                        .Terms("categories", w => w
                            .Field(q => q.Categories.FirstOrDefault().Id)
                        )
                    )
                )
                .Nested("Facets2", nested => nested
                    .Path(p => p.Brand)
                    .Aggregations(e => e
                        .Terms("brand", w => w
                            .Field(q => q.Brand.Id)
                        )
                    )
                )
            )
        );
    
        Console.WriteLine(Encoding.UTF8.GetString(response.RequestInformation.Request));
    }
    
    public class Example
    {
        public IList<Category> Categories { get; set; }
        public Brand Brand { get; set; }
    }
    
    public class Brand
    {
        public int Id { get; set; }
    }
    
    public class Category
    {
        public int Id { get; set; }
    }
    

    This outputs the following request query

    {
      "aggs": {
        "Facets": {
          "nested": {
            "path": "categories"
          },
          "aggs": {
            "categories": {
              "terms": {
                "field": "categories.id"
              }
            }
          }
        },
        "Facets2": {
          "nested": {
            "path": "brand"
          },
          "aggs": {
            "brand": {
              "terms": {
                "field": "brand.id"
              }
            }
          }
        }
      }
    }
    

     

  • 相关阅读:
    cliconfg
    SQL 校验身份证格式
    常用MIME类型汇总
    SqlBulkCopy批量将Excel(Aspose)数据导入至SQL Server
    C#生成图片验证码
    SqlServer PIVOT函数快速实现行转列,UNPIVOT实现列转行
    SQL Server 中 EXEC 与 SP_EXECUTESQL 的区别
    C#常用加密方式
    CURSOR 游标使用示例
    linux命令
  • 原文地址:https://www.cnblogs.com/a-du/p/7417481.html
Copyright © 2020-2023  润新知