我正在处理类似下面这样的文档:
{
"product_name": "abc",
"prices": {
"regular": 9.99,
"pricing_tables": [
{ "id": 1, "price": 8.99 },
{ "id": 2, "price": 7.99 }
]
}
}
prices.pricing_tables是一个嵌套的字段。
我想要做的是按照以下逻辑排序,给定一个价格表id:
- 如果嵌套字段包含给定的id,则使用pricing_tables.price
- 如果嵌套字段不包含id,则使用prices.regular
到目前为止我尝试使用的查询语句:
"sort": [
{
"_script": {
"type": "number",
"script": {
"lang": "painless",
"source": """
if(doc['prices.pricing_tables.price'].size() != 0) {
return doc['prices.pricing_tables.price'].value;
}
else {
return doc['prices.regular'].value;
}
"""
},
"nested": {
"path": "prices.pricing_tables",
"filter": {
"term": {"prices.pricing_tables.id": 1}
}
},
"order": "asc"
}
}
]
然而,它并没有按照预期的方式工作。当定价表嵌套对象中没有条目时,结果中的排序值总是1.7976931348623157E308。
我在这里错过了什么?是否可能实现这个功能?