Как проверить существует ли поле в документе с оператором И
Есть обычный поиск, где мы ищем по category_id и существованию характеристики fields.id
"query" => [
"bool" => [
"must" => [
"match" => [
"category_id" => $category_id
], [
"exists" => [
"field" => "fields.$id"
]
]
]
]
]
Поиск работает, встала задача добавить еще одну проверку на существование характеристики fields.id, но чтобы у нее был оператор И, то есть нужно получить все товары, где:
Категория = 1
Есть характеристика с id = 1
ИЛИ есть характеристика с id =2
В документации нашел возможность выбора оператора, только для match
"match" => [
"message" => [
"query": "this is a test",
"operator": "or"
]
]
Есть ли подобное решение для exists
Ответы (1 шт):
Автор решения: Сергей Храмов
→ Ссылка
вам просто нужно использовать "should": https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-bool-query.html
"query" => [
"bool" => [
"must" => [
"match" => [
"category_id" => $category_id
]
],
"should" => [
[
"exists" => [
"field" => "fields.$id1"
]
],
[
"exists" => [
"field" => "fields.$id2"
]
],
]
]
]