gpt4 book ai didi

elasticsearch - 我可以在Elasticsearch中过滤子数组吗?

转载 作者:行者123 更新时间:2023-12-02 22:38:10 26 4
gpt4 key购买 nike

我在 flex 搜索中将每个订单的订单和订单产品附加为子数组。当我汇总价格时,我需要有可能在我的订单文件中过滤我的订单产品。

我在Elastic中的文档示例:

{  
"OrderID":4567488,
"projectId":"4",
"Project":"direkt",
"legacy_id":null,
"supporterId":null,
"Origin":"FR",
"orderProducts":[
{
"OrderProductID":"15694898",
"OrderID":"4567488",
"brandNo":"30",
"Price":"26.95",
},
{
"OrderProductID":"15694898",
"OrderID":"4567488",
"brandNo":"15",
"Price":"15.22",
},
{
"OrderProductID":"15694898",
"OrderID":"4567488",
"brandNo":"123",
"Price":"24.55",
},
]
}

我现在如何过滤:
 {  
"index":"order_index",
"from":0,
"size":100,
"body":{
"query":{
"filtered":{
"filter":{
"bool":{
"must":[
{
"term":{
"orderProducts.brandNo":"30"
}
}
],
}
}
}
}
}
}

我期待什么
{  
"OrderID":4567488,
"projectId":"4",
"Project":"direkt",
"legacy_id":null,
"supporterId":null,
"Origin":"FR",
"orderProducts":[
{
"OrderProductID":"15694898",
"OrderID":"4567488",
"brandNo":"30",
"Price":"26.95",
},
]
}

我真正得到的是:

所有文件。

有可能吗要过滤子数组数据?

UPD。

是的,这是我的架构映射:
"mappings":{  
"order":{
"dynamic_templates":[
{
"strings":{
"mapping":{
"type":"string",
"fields":{
"raw":{
"index":"not_analyzed",
"type":"string"
}
}
},
"match_mapping_type":"string"
}
}
],
"properties":{
"orderProducts":{
"include_in_parent":true,
"properties":{
"OrderProductID":{
"type":"long"
},
"OrderID":{
"type":"long"
},
"brandNo":{
"type":"long"
},
"Price":{
"type":"double"
}

},
"type":"nested"
},
"OrderID":{
"type":"long"
}
}
}
},

最佳答案

好吧,经过一些实验,我发现可以像这样完成聚合:

 {  
"aggs":{
"sales":{
"nested":{
"path":"orderProducts"
},
"aggs":{
"filtered_nestedobjects":{
"filter":{
"bool":{
"must":[
{
"terms":{
"orderProducts.brandNo":[
"30"
]
}
}
]
}
},
"aggs":{
"Quantity":{
"sum":{
"field":"orderProducts.Quantity"
}
}
}
}
}
}
}
}

我们可以过滤 flex 的子数组的主要问题 的答案是。只有inner_hits我做到了。

关于elasticsearch - 我可以在Elasticsearch中过滤子数组吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42838254/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com