Spec-Zone.ru › Elasticsearch 7
›Elasticsearch Guide [7.17] ›Анализ текста ›Настройка анализа текста

Указание анализатора

Elasticsearch предлагает различные способы указания встроенных или пользовательских анализаторов:

  • По полю, индексу или запросу
  • Для индексации или поиска

Держите это просто

Гибкость указания анализаторов на различных уровнях и для различных времён отличная…​ но только когда это необходимо.

В большинстве случаев лучше всего подходит простой подход: укажите анализатор для каждого поля, как описано в Указание анализатора для поля.

Этот подход хорошо работает со стандартным поведением Elasticsearch, позволяя использовать один и тот же анализатор для индексирования и поиска. Он также позволяет быстро увидеть, какой анализатор применяется к какому полю, используя API получения отображения.

Если вы обычно не создаёте отображения для своих индексов, вы можете использовать шаблоны индексов для достижения аналогичного эффекта.

Как Elasticsearch определяет анализатор индекса

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

  1. Параметр отображения analyzer для поля. См. Указание анализатора для поля.
  2. Настройка индекса analysis.analyzer.default. См. Указание анализатора по умолчанию для индекса.

Если ни один из этих параметров не указан, используется standard анализатор.

Указание анализатора для поля

При отображении индекса вы можете использовать параметр отображения analyzer, чтобы указать анализатор для каждого поля text.

Следующий запрос API создания индекса whitespace устанавливает анализатор title в качестве анализатора для поля title.

PUT my-index-000001
{
  "mappings": {
    "properties": {
      "title": {
        "type": "text",
        "analyzer": "whitespace"
      }
    }
  }
}

Указание анализатора по умолчанию для индекса

В дополнение к анализатору на уровне поля вы можете установить резервный анализатор, используя настройку analysis.analyzer.default.

Следующий запрос API создания индекса simple устанавливает анализатор simple в качестве резервного анализатора для my-index-000001.

PUT my-index-000001
{
  "settings": {
    "analysis": {
      "analyzer": {
        "default": {
          "type": "simple"
        }
      }
    }
  }
}

Как Elasticsearch определяет анализатор поиска

В большинстве случаев указание отдельного анализатора поиска не нужно. Это может негативно повлиять на релевантность и привести к неожиданным результатам поиска.

Если вы всё же решите указать отдельный анализатор поиска, мы рекомендуем тщательно протестировать вашу конфигурацию анализа перед развертыванием в рабочей среде.

При поиске Elasticsearch определяет используемый анализатор, проверяя следующие параметры в порядке:

  1. Параметр analyzer в запросе поиска. См. Указание анализатора поиска для запроса.
  2. Параметр отображения search_analyzer для поля. См. Указание анализатора поиска для поля.
  3. Настройка индекса analysis.analyzer.default_search. См. Указание анализатора поиска по умолчанию для индекса.
  4. Параметр отображения analyzer для поля. См. Указание анализатора для поля.

Если ни один из этих параметров не указан, используется standard анализатор.

Указание анализатора поиска для запроса

При написании полнотекстового запроса вы можете использовать параметр analyzer для указания анализатора поиска. Если он предоставлен, он переопределяет все остальные анализаторы поиска.

Следующий запрос API поиска stop устанавливает анализатор stop в качестве анализатора поиска для match запроса.

GET my-index-000001/_search
{
  "query": {
    "match": {
      "message": {
        "query": "Quick foxes",
        "analyzer": "stop"
      }
    }
  }
}

Указание анализатора поиска для поля

При отображении индекса вы можете использовать параметр отображения search_analyzer для указания анализатора поиска для каждого поля text.

Если анализатор поиска указан, анализатор индекса также должен быть указан с помощью параметра analyzer.

Следующий запрос API создания индекса simple устанавливает анализатор simple в качестве анализатора поиска для поля title.

PUT my-index-000001
{
  "mappings": {
    "properties": {
      "title": {
        "type": "text",
        "analyzer": "whitespace",
        "search_analyzer": "simple"
      }
    }
  }
}

Указание анализатора поиска по умолчанию для индекса

При создании индекса вы можете установить анализатор поиска по умолчанию с помощью настройки analysis.analyzer.default_search.

Если анализатор поиска указан, анализатор индекса по умолчанию также должен быть указан с помощью настройки analysis.analyzer.default.

Следующий запрос API создания индекса whitespace устанавливает анализатор whitespace в качестве анализатора поиска по умолчанию для индекса my-index-000001.

PUT my-index-000001
{
  "settings": {
    "analysis": {
      "analyzer": {
        "default": {
          "type": "simple"
        },
        "default_search": {
          "type": "whitespace"
        }
      }
    }
  }
}

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

Spec-Zone.ru

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