• 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"
              }
            }
          }
        }
      }
    }
    

     

  • 相关阅读:
    mysql初识(五) 统计与计算与时间
    mysql初识(四)添加/修改字段信息
    mysql初识(二) 基础的查询语句
    mysql初识(三)修改表结构
    mysql初识(一)基础属性篇
    在Ubuntu上安装Docker Engine
    使用PowerDesigner对NAME和COMMENT互相转换
    mysql 5.1.34
    debian7下安装eclipse
    让 Visio 2003/2007 同时开多个独立窗口
  • 原文地址:https://www.cnblogs.com/a-du/p/7417481.html
Copyright © 2020-2023  润新知