使用NEST的Elasticsearch与嵌套对象的嵌套聚合

时间:2019-04-25 20:46:10

标签: elasticsearch nest

我正在尝试对嵌套对象进行汇总。以下是我的json。下面的第一个代码示例成功返回productCategory ID。但是,我想在聚合中返回类别ID和名称。我以为我可以尝试下面的第二个代码示例,但是它不起作用。

"productCategories": [{
    "id":6,
    "productId":6,
    "categoryId":4,
    "category":{
        "parentId":2,
        "name":"Air Fresheners",
        "id":6
    }
}]

此汇总了productCategory id作为键:

        .Aggregations(aggs => aggs
            .Nested("agg-categories", nested => nested
                .Path(p => p.ProductCategories)
                .Aggregations(r => r
                    .Terms("agg-category", w => w
                        .Field(f => f.ProductCategories.First().Id)
                    )
                )
            )
        )

但是我需要类别信息,而该信息不起作用:

        .Aggregations(aggs => aggs
            .Nested("agg-categories", nested => nested
                .Path(p => p.ProductCategories.First().Category)
                .Aggregations(r => r
                    .Terms("agg-category", w => w
                        .Field(f => f.ProductCategories.First().Category.Id)
                    )
                )
            )
        )

1 个答案:

答案 0 :(得分:0)

如果将category简单地映射为object,则可以使用以下内容

var searchResponse = client.Search<Document>(s => s
    .Aggregations(aggs => aggs
        .Nested("agg-categories", nested => nested
            .Path(p => p.ProductCategories)
            .Aggregations(r => r
                .Terms("agg-category", w => w
                    .Field(f => f.ProductCategories.First().Category.Id)
                )
            )
        )
    )
);