У меня есть индекс, документы которого содержат список вложенных объектов. Упрощенная версия сопоставлений выглядит следующим образом:
{
"_doc": {
"dynamic": "strict",
"properties": {
"things": {
"type": "nested",
"dynamic": "strict",
"properties": {
"name": {
"type": "keyword"
},
"version": {
"type": "keyword"
}
}
}
}
}
}
Я хочу получить все документы, которые не имеют любые вложенные вещи-объекты с определенным набором значений. Запросы типа
{
"query": {
"nested": {
"path": "things",
"query": {
"bool": {
"must_not": [
{
"term": {
"name": "thing1"
}
},
{
"term": {
"version": "1.0.0"
}
}
]
}
}
}
}
}
, кажется, просто возвращает все документы, которые имеют некоторый вложенный документ, который не соответствует ... что означает, что он все еще возвращает все документы, даже те, которые также имеют , имеют вложенный документ объект, который соответствует. Итак, как мне правильно их отфильтровать?
РЕДАКТИРОВАТЬ: запросы, такие как
{
"query": {
"bool": {
"must_not": [
{
"nested": {
"path": "things",
"query": {
"bool": {
"must": [
{
"term": {
"name": "thing1"
}
},
{
"term": {
"version": "1.0.0"
}
}
]
}
}
}
}
]
}
}
}
, которые вложили запрос вложенного объекта в must_not
, также не работают и все равно просто возвращают все.