Я пытаюсь написать поисковый запрос, который соответствует полю вложенного объекта, но только тем, которые являются первым элементом в массиве ( тип вложенного ).
Пример данных:
"_source": {
...
"status": [
{
"@timestamp": "2019-07-09T16:08:45.779Z",
"ad_user": "jgross",
"message": "ergregergergegegregregregrege",
"status": "ACKNOWLEDGE"
},
{
"@timestamp": "2019-07-09T01:09:40.719305Z",
"ad_user": "__elastic",
"message": "Initial status",
"status": "ACTIVE"
}
]
},
Таким образом, этот документ не должен совпадать, поскольку первый элемент в массиве имеет статус ACKNOWLEDGE , а не ACTIVE .
Запрос:
"query": {
"nested": {
"path": "status",
"query": {
"bool": {
"must": [
{
"match": {
"status.status": "ACTIVE"
}
}
]
}
},
"inner_hits": {}
}
}
Результат:
"hits": [
{
"_index": "watches-logs",
"_type": "_doc",
"_id": "o4BH1GsBaUeb2kAfclb-",
"_nested": {
"field": "status",
"offset": 1
},
"_score": 0.4088956,
"_source": {
"@timestamp": "2019-07-09T01:09:40.719305Z",
"ad_user": "__elastic",
"message": "Initial status",
"status": "ACTIVE"
}
},
...
]
Есть ли способ добавить другой оператор сопоставления, который соответствует offest: 0
или как-то еще?
Я уверен, что мог бы использовать безболезненный сценарий, но это кажется дорогим, поэтому я сначала хотел попробовать другие способы.