Как выразить необязательное сопоставление с помощью Query String Query

У меня есть запрос, как показано ниже, с использованием строка запроса dsl, которая, как я ожидаю, вернет результаты, соответствующие всем трем утверждениям. (статус = активен, цена = 100, язык = en).

Как я могу сделать параметр language необязательным, просто набрать меньше очков, если он не соответствует, вместо того, чтобы вообще не совпадать?

(status:"active") AND (price:100) AND (language:"en")

person mike    schedule 05.11.2018    source источник


Ответы (1)


Вы можете попробовать это

(status:active AND language:en) OR (price:100 AND language:en)

Или более короткая версия, например:

+status:active +price:100 language:en

Эквивалентный запрос, переписанный с использованием запросов bool и match, выглядит следующим образом:

{
  "bool": {
    "must": [
      {
        "match": {
          "status": "active"
        }
      },
      {
        "match": {
          "price": 100
        }
      }
    ],
    "should": {
      "match": {
        "language": "en"
      }
    }
  }
}
person Val    schedule 06.11.2018
comment
повезло с этим? - person Val; 27.11.2018