我的文档看起来像这样: -
“_ source”:{
"product_name": "p2",
"m_p": [
{
"m_id": "m2",
"price": 100
},
{
"m_id": "m4",
"price": 101
}
]
}
和
“_ source”:{
"product_name": "p1",
"m_p": [
{
"m_id": "m1",
"price": 50
},
{
"m_id": "m2",
"price": 55
},
{
"m_id": "m3",
"price": 55
},
{
"m_id": "m5",
"price": 65
}
]
}
现在我需要根据给定(来自外部源)m_id和p_id对的价格对这些进行排序。 例如,外部服务为p1-m2和p2-m4提供 所以查询应该根据p1的价格排序产品为55(m2卖出55),p2的价格为101(m4卖出101)。
答案 0 :(得分:0)
您需要使用nested sort按存储在嵌套字段中的值进行排序。此外,您可以使用nested_filter
字段按照您关注的文档中的字段内容进行排序。
在嵌套过滤器中,您只能过滤嵌套文档的属性,如果要同时按product_name
和{{1进行过滤,则必须在每个嵌套文档中存储product_name
排序时。
使用这些设置
m_id
并使用此格式索引文档
{
"mappings": {
"test": {
"properties": {
"m_p": {
"type": "nested",
"properties": {
"price": {"type": "integer"},
"product_name": {"type": "string"},
"m_id": {"type": "string"}
}
}
}
}
}
}
您可以使用以下查询根据{ "product_name": "p2",
"m_p": [
{
"m_id": "m2",
"product_name": "p2",
"price": 100
},
{
"m_id": "m4",
"product_name": "p2",
"price": 101
}
]
}
和product_name
m_id