Попытка выполнить запрос ES, я столкнулся с проблемой при попытке выполнить вложенную фильтрацию объектов в массиве. Наша структура данных изменилась от существ:Проверка наличия поля под вложенной агрегацией elasticsearch
"_index": "events_2015-07-08",
"_type": "my_type",
"_source":{
...
...
"custom_data":{
"className:"....."
}
}
к:
"_index": "events_2015-07-08",
"_type": "my_type",
"_source":{
...
...
"custom_data":[ //THIS CHANGED FROM AN OBJECT TO AN ARRAY OF OBJECTS
{
"key":".....",
"val":"....."
},
{
"key":".....",
"val":"....."
}
]
}
это вложенная фильтр тонкой по индексам, которые имеют новую структуру данных работ:
{
"nested": {
"path": "custom_data",
"filter": {
"bool": {
"must": [
{
"term":
{
"custom_data.key": "className"
}
},
{
"term": {
"custom_data.val": "SOME_VALUE"
}
}
]
}
},
"_cache": true
}
}
Однако она не при переходе по индексам, которые имеют более старую структуру данных, поэтому эту функцию нельзя добавить. В идеале я бы смог найти обе структуры данных, но в этот момент я бы согласился на «изящный сбой», т. Е. Просто не возвращать результаты, когда структура старая.
Я попытался добавить фильтр «существует» в поле «custom_data.key» и «существует» внутри «не» в поле «custom_data.className», но я продолжаю получать «SearchParseException [[events_2015- 07-01] [0]: от [-1], размер [-1]: сбой анализа данных [Не удалось разобрать источник »