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

avatar
Mike
1 июля 2021 в 21:39
48
1
0

Я хочу найти имена, которые начинаются или содержат фразу man. Но я также хочу запрашивать разные индексы.

Поэтому он должен возвращать все поля, содержащие термин man, например hoffman фамилия, или все, что содержит термин.

Как этого добиться?

    "query": {
        "multi_match": {
            "query": "man",
            "fields": [
                "name",
                "last_name",
                "email"
            ]
        }
    }
}
{
    "query": {
        "multi_match": {
            "query": "man",
            "fields": [
                "billing.name",
                "billing.last_name",
                "billing.email"
            ]
        }
    }
}
Источник

Ответы (1)

avatar
ESCoder
2 июля 2021 в 01:59
0

Если вы хотите выполнить поиск по нескольким индексам, вы можете использовать _index field, а для поиска по нескольким полям вы можете использовать query_String вместо запроса с несколькими совпадениями.

GET /_search

{
  "query": {
    "bool": {
      "must": [
        {
          "terms": {
            "_index": [
              "index-1",
              "index-2"
            ]
          }
        },
        {
          "query_string": {
            "query": "*man*"
          }
        }
      ]
    }
  }
}