ElasticAPMNetCoreAll的在查询的时候Nested方法怎么使用?给我个复杂的例子
Nested()方法用于在查询中嵌套另一个查询,以便在父查询中获取子查询的结果。下面是一个复杂的例子:
假设你有一个名为"orders"的索引,其中包含了订单信息,每个订单包含了多个商品。每个商品都有一个名为"sku"的属性,表示商品的唯一标识。现在你想要查询所有订单中,每个商品的销售数量和总销售额。你可以使用Nested()方法来实现这个查询:
var result = await elasticClient.SearchAsync<Order>(s => s
.Index("orders")
.Size(0)
.Aggregations(a => a
.Nested("nested_products", n => n
.Path(p => p.Products)
.Aggregations(aa => aa
.Terms("group_by_sku", t => t
.Field(f => f.Products.First().Sku)
.Aggregations(aaa => aaa
.Sum("total_sales", sa => sa
.Field(f => f.Products.First().Sales)
)
.Sum("total_revenue", sa => sa
.Field(f => f.Products.First().Revenue)
)
)
)
)
)
)
);
这个查询的意思是,首先在"orders"索引中查询所有订单,然后使用Nested()方法嵌套一个子查询,这个子查询的路径是"Products",表示要查询每个订单中的所有商品。在子查询中,使用Terms()方法按照"sku"属性进行分组,然后使用Sum()方法计算每个分组中所有商品的销售数量和总销售额。最后,将子查询的结果作为父查询的聚合结果返回。
需要注意的是,这个查询中使用了多个嵌套查询,每个嵌套查询都需要使用Nested()方法来指定路径。另外,由于每个订单中可能包含多个商品,所以在查询中需要使用"Products.First()"来获取第一个商品的属性
原文地址: https://www.cveoy.top/t/topic/dOFo 著作权归作者所有。请勿转载和采集!