Поиск…


замечания

Анализаторы берут текст из строкового поля и генерируют токены, которые будут использоваться при запросе.

Анализатор работает в последовательности:

  • CharFilters (ноль или больше)
  • Tokenizer (One)
  • TokenFilters (ноль или больше)

Анализатор может быть применен к сопоставлениям, так что когда поля индексируются, это делается на основе каждого токена, а не на строке в целом. При запросе входная строка также будет запускаться через анализатор. Поэтому, если вы нормализуете текст в Анализаторе, он всегда будет соответствовать, даже если запрос содержит ненормированную строку.

картографирование

Анализатор может применяться к сопоставлению с помощью «анализатора», по умолчанию используется «стандартный» анализатор. В качестве альтернативы, если вы не хотите использовать какой-либо анализатор (поскольку токенизация или нормализация не были бы полезны), вы можете указать «index»: «not_analyzed»

PUT my_index 
{
  "mappings": {
    "user": {
      "properties": {
        "name": {
          "type": "string"
          "analyzer":  "my_user_name_analyzer"
        },
        "id": {
          "type": "string",
          "index": "not_analyzed"
        }
      }
    }
  }
}

Multi-поля

Иногда бывает полезно иметь несколько разных индексов поля с различными анализаторами. Вы можете использовать возможности нескольких полей для этого.

PUT my_index 
{
  "mappings": {
    "user": {
      "properties": {
        "name": {
          "type": "string"
          "analyzer": "standard",
          "fields": {
            "special": {
               "type": "string",
               "analyzer": "my_user_name_analyzer"
            },
            "unanalyzed": {
              "type": "string",
              "index": "not_analyzed"
            }
          }
        }
      }
    }
  }
}

При запросе вместо простого использования «user.name» (который в этом случае все равно будет использовать анализатор stanard), вы можете использовать «user.name.special» или «user.name.unanalyzed». Обратите внимание, что документ останется без изменений, это влияет только на индексирование.

Анализаторы

Анализ в elasticsearch входит в контекст, когда вы готовы анализировать данные в своем индексе.

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

  • Сокращения
  • Морфологический
  • Типовая обработка

Теперь мы посмотрим на каждого из них.

  1. Сокращения :

    Используя анализаторы, мы можем сказать elasticsearch, как обрабатывать аббревиатуры в наших данных, т. Е. Dr => Doctor, поэтому всякий раз, когда мы ищем ключевое слово врача в нашем индексе, elasticsearch также возвращает результаты, которые указаны в них.

  1. Стеблирование :

    Использование стерилизации в анализаторах позволяет нам использовать базовые слова для модифицированных глаголов типа

    слово изменения
    требовать Требование, требуется
  1. Типовая обработка :

    Анализаторы также обеспечивают обработку дескрипторов как при запросе, если мы ищем конкретное слово say 'resurrection', тогда elasticsearch вернет результаты, в которых присутствуют опечатки. Он будет обрабатывать опечатки, такие как resurection, reusurection, как таковые и будет перенастроить результат.

    слово изменения
    воскрешение Resurection, воскрешение

Анализаторы в Elasticsearch

  1. стандарт

  2. просто

  3. Пробелы

  4. Стоп

  5. Ключевое слово

  6. Шаблон

  7. язык

  8. Снежный шар

Игнорировать анализатор случаев

Иногда нам может потребоваться игнорировать случай нашего запроса относительно соответствия в документе. Анализатор можно использовать в этом случае, чтобы игнорировать случай во время поиска. Каждое поле должно содержать этот анализатор в свойстве, чтобы работать:

"settings": {
        "analysis": {
            "analyzer": {
                "case_insensitive": {
               "tokenizer": "keyword",
               "filter": ["lowercase"]
            }
            }
        }
    }


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow