рассмотреть каждое слово в запросеasticsearch - PullRequest
0 голосов
/ 07 февраля 2019

Рассмотрите эту фразу: lorem ipsum quid.

Я хочу запросить несколько полей и предпочитаю ответы, где присутствуют все слова.Другими словами, я не хочу игнорировать некоторые слова, я хочу увеличить запросы, которые учитывают все слова.

Я могу достичь этой цели, выполнив simple_query_string и добавив + перед каждым словом:

query: {
  simple_query_string: {
    query: "lorem +ipsum +quid",
    default_operator: "and",
    fields: ["f1", "f2", "f3"]
  }
}

Тем не менее, это кажется странным, и это вынуждает меня отредактировать пользовательский запрос и заменить через регулярные выражения пробелы на +, что является своего рода изменением.

Есть ли способ с помощью упругого поиска заставить (в совпадении или в multi_match или что-то, чего я не знаю) учитывать каждое слово?

1 Ответ

0 голосов
/ 07 февраля 2019

Не уверен, что это сработает, но попробуйте вот так - term внутри must

{
  "query": {
    "bool": {
      "must": [
        {
          "term": {
            "f1": "lorem ipsum quid"
          }
        },
        {
          "term": {
            "f2": "lorem ipsum quid"
          }
        },
       {
          "term": {
            "f3": "lorem ipsum quid"
          }
        }
      ]
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...