Spec-Zone.ru › Elasticsearch 8
›Elasticsearch Guide [8.17] ›Query DSL ›Полные текстовые запросы

Запрос match boolean prefix

Запрос match_bool_prefix анализирует свой ввод и строит запрос bool из терминов. Каждый термин, кроме последнего, используется в запросе term. Последний термин используется в запросе prefix. Запрос match_bool_prefix, такой как

resp = client.search(
    query={
        "match_bool_prefix": {
            "message": "quick brown f"
        }
    },
)
print(resp)
response = client.search(
  body: {
    query: {
      match_bool_prefix: {
        message: 'quick brown f'
      }
    }
  }
)
puts response
const response = await client.search({
  query: {
    match_bool_prefix: {
      message: "quick brown f",
    },
  },
});
console.log(response);
GET /_search
{
  "query": {
    "match_bool_prefix" : {
      "message" : "quick brown f"
    }
  }
}

где анализ производит термины quick, brown и f, похож на следующий запрос bool

resp = client.search(
    query={
        "bool": {
            "should": [
                {
                    "term": {
                        "message": "quick"
                    }
                },
                {
                    "term": {
                        "message": "brown"
                    }
                },
                {
                    "prefix": {
                        "message": "f"
                    }
                }
            ]
        }
    },
)
print(resp)
response = client.search(
  body: {
    query: {
      bool: {
        should: [
          {
            term: {
              message: 'quick'
            }
          },
          {
            term: {
              message: 'brown'
            }
          },
          {
            prefix: {
              message: 'f'
            }
          }
        ]
      }
    }
  }
)
puts response
const response = await client.search({
  query: {
    bool: {
      should: [
        {
          term: {
            message: "quick",
          },
        },
        {
          term: {
            message: "brown",
          },
        },
        {
          prefix: {
            message: "f",
          },
        },
      ],
    },
  },
});
console.log(response);
GET /_search
{
  "query": {
    "bool" : {
      "should": [
        { "term": { "message": "quick" }},
        { "term": { "message": "brown" }},
        { "prefix": { "message": "f"}}
      ]
    }
  }
}

Важное различие между запросом match_bool_prefix и match_phrase_prefix заключается в том, что запрос match_phrase_prefix сопоставляет свои термины как фразу, а запрос match_bool_prefix может сопоставлять свои термины в любом положении. Пример запроса match_bool_prefix выше может сопоставить поле, содержащее quick brown fox, но также может сопоставить brown fox quick. Он также может сопоставить поле, содержащее термин quick, термин brown и термин, начинающийся с f, появляющийся в любом положении.

Параметры

По умолчанию входной текст запросов match_bool_prefix будет анализироваться с помощью анализатора из сопоставления запрошенного поля. Другой анализатор поиска можно настроить с помощью параметра analyzer

resp = client.search(
    query={
        "match_bool_prefix": {
            "message": {
                "query": "quick brown f",
                "analyzer": "keyword"
            }
        }
    },
)
print(resp)
response = client.search(
  body: {
    query: {
      match_bool_prefix: {
        message: {
          query: 'quick brown f',
          analyzer: 'keyword'
        }
      }
    }
  }
)
puts response
const response = await client.search({
  query: {
    match_bool_prefix: {
      message: {
        query: "quick brown f",
        analyzer: "keyword",
      },
    },
  },
});
console.log(response);
GET /_search
{
  "query": {
    "match_bool_prefix": {
      "message": {
        "query": "quick brown f",
        "analyzer": "keyword"
      }
    }
  }
}

Запросы match_bool_prefix поддерживают параметры minimum_should_match и operator, как описано для запроса match, применяя настройку к построенному запросу bool. Количество клауз в построенном запросе bool в большинстве случаев будет равно количеству терминов, полученных в результате анализа текста запроса.

Параметры fuzziness, prefix_length, max_expansions, fuzzy_transpositions и fuzzy_rewrite могут быть применены к подзапросам term, построенным для всех терминов, кроме конечного. Они не оказывают никакого влияния на запрос префикса, построенный для конечного термина.

© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/8.17/query-dsl-match-bool-prefix-query.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API