我有一个具有这种结构的文档(伪代码,只是为了了解json中的结构):
source{
id,
property: {prop1, prop2}
}
我需要按prop1
或prop2
对搜索结果进行排序。
我还有一个数组(在此处进行硬编码),它将尝试匹配字段“ id
”。如果数组中包含id,则按prop1
排序。否则通过prop2
。
这是json:
{
"query": {
"bool" : {
"must": { "match_all": {} }
}
},
"sort": {
"_script": {
"script": {
"lang":"painless",
"inline":"[ 677 ].indexOf(doc['id']) !== -1 ? doc['property.prop1.raw'] : doc['property.prop1.raw.raw']"
},
"type": "string",
"order": "asc"
}
}
}
然后我得到的是:
{"type":"illegal_argument_exception","reason":"Variable [id] is not defined."}
我尝试了所有可能的组合。首先,将“ inline
”替换为“ source
”。
而且还可以使用以下选项之一:
doc['id']
doc[id]
doc['id.raw']
doc['id.raw.value']
doc['id.raw'].value
doc['id'].raw.value
它总是产生相同的错误。我在做什么错了?
编辑
这是实际文件:
{
_index: "myindex",
_type: "cases",
_id: "72",
found: true,
_source: {
id: 72,
property: {
id: 72,
prop1: "a",
prop2: "b"
}
}
}