ElasticSearch Недопустимое значение ярлыка списка [id] «Обновить по запросу»
я получил
Illegal list shortcut value [id].
пытается обновить этот документ с помощью этого запроса. Что мне не хватает
events" : { "type" : "nested" }
location: {"type" : "nested"} nested type of objects
id: {"type" : "text"}
POST event_lists/_update_by_query?conflicts=proceed
{
"script": {
"lang": "painless",
"source": """
for (int i=0; i< ctx._source.events.length; i++){
if(params.event_ids.contains(ctx._source.events[i].id)){
ctx._source.events[i].location = params.location;
break;
}
}
""",
"params": {
"event_ids": ["12345"],
"location": location_object
}
}
}
При попытке использовать Kibana для отладки
Debug.explain(ctx._source.events[i].id);
I get
"root_cause": [
{
"type": "script_exception",
"reason": "runtime error",
"painless_class": "java.lang.String",
"to_string": "ETo3zoABiBlDN0geqAGN",
"java_class": "java.lang.String",
"script_stack": [
"Debug.explain(ctx._source.events[i].id); \n ",
" ^---- HERE"
]
1 ответ
В итоге я проверил, является ли объект списком или объектом, и, похоже, он работает.
for (event in ctx._source.events ){
if(event instanceof List && event.size() > 0) {
if(params.event_ids.contains(event[0].id)){
event[0].location = params.location;
break;
}
}else{
if(params.event_ids.contains(event.id)){
event.location = params.location;
break;
}
}
}