У меня есть документ с такой структурой (псевдокод, просто чтобы понять структуру в json):
source{
id,
property: {prop1, prop2}
}
Мне нужно отсортировать результат поиска по prop1
илиprop2
.У меня также есть массив (жестко запрограммированный здесь), который будет пытаться соответствовать полю "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
".Но также используя on:
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"
}
}
}