Spec-Zone.ru › Elasticsearch 7
›Elasticsearch Guide [7.17] ›Отображение ›Параметры отображения

search_analyzer

Обычно, один и тот же анализатор должен применяться во время индексирования и поиска, чтобы гарантировать, что термины в запросе имеют тот же формат, что и термины в инвертированном индексе.

Иногда, однако, может иметь смысл использовать другой анализатор во время поиска, например, при использовании edge_ngram токенизатора для автозаполнения или при использовании синонимов во время поиска.

По умолчанию запросы будут использовать analyzer, определенный в отображении поля, но это можно переопределить с помощью параметра search_analyzer:

PUT my-index-000001
{
  "settings": {
    "analysis": {
      "filter": {
        "autocomplete_filter": {
          "type": "edge_ngram",
          "min_gram": 1,
          "max_gram": 20
        }
      },
      "analyzer": {
        "autocomplete": { 
          "type": "custom",
          "tokenizer": "standard",
          "filter": [
            "lowercase",
            "autocomplete_filter"
          ]
        }
      }
    }
  },
  "mappings": {
    "properties": {
      "text": {
        "type": "text",
        "analyzer": "autocomplete", 
        "search_analyzer": "standard" 
      }
    }
  }
}

PUT my-index-000001/_doc/1
{
  "text": "Quick Brown Fox" 
}

GET my-index-000001/_search
{
  "query": {
    "match": {
      "text": {
        "query": "Quick Br", 
        "operator": "and"
      }
    }
  }
}

Настройки анализа для определения пользовательского autocomplete анализатора.

Поле text использует autocomplete анализатор при индексировании, но standard анализатор при поиске.

Это поле индексируется как термины: [ q, qu, qui, quic, quick, b, br, bro, brow, brown, f, fo, fox ]

Запрос ищет оба этих термина: [ quick, br ]

Полное объяснение этого примера можно найти в Index time search-as-you- type.

Параметр search_analyzer можно обновить для существующих полей с помощью API обновления отображения. Обратите внимание, что для этого необходимо повторить в обновлённом определении поля все существующие настройки "анализатора" и "типа".

© 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/7.17/search-analyzer.html

Spec-Zone.ru

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