English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Análise do Elasticsearch

Durante a manipulação da consulta na operação de pesquisa, o módulo de análise analisará o conteúdo de qualquer índice. O módulo é composto por analisador, gerador de tokens, filtro de tokens e filtro de caracteres. Se o analisador não for definido, o analisador, tokens, filtros e gerador de tokens integrados serão registrados no módulo de análise por padrão.

Neste exemplo, usamos um analisador padrão, que é usado quando nenhum outro analisador é especificado. Ele analisará a sintaxe da frase e gerará as palavras usadas na frase.

POST _analyze
{
   "analyzer": "padrão",
   "text": "hoje o tempo está lindo"
{}

Após executar o código acima, obtemos a seguinte resposta:

{
   "tokens": [
      {
         "token" : "hoje",
         "start_offset": 0,
         "end_offset": 7,
         "type": "",
         "position": 0
      },
      {
         "token": "weather",
         "start_offset": 8,
         "end_offset": 15,
         "type": "",
         "position": 1
      },
      {
         "token" : "é",
         "start_offset": 16,
         "end_offset": 18,
         "type": "",
         "position": 2
      },
      {
         "token": "beautiful",
         "start_offset": 19,
         "end_offset": 28,
         "type": "",
         "position": 3
      {}
   ]]
{}

Configuração do analisador padrão

Podemos usar vários parâmetros para configurar o analisador padrão para atender às nossas necessidades personalizadas.

Neste exemplo, configuramos o analisador padrão para max_token_length de5.

Para isso, primeiro usamos um analisador com o parâmetro max_length_token para criar o índice.

PUT "index_"4_analises
{
   "settings": {
      "analysis": {
         "analyzer": {
            "meu_analista_ingles": {
               "type": "padrão",
               "max_token_length": 5,
               "stopwords": "_ingles_"
            {}
         {}
      {}
   {}
{}

Em seguida, usamos o analisador de texto conforme mostrado a seguir. Observe como os tokens não são exibidos, pois têm dois espaços no início e dois no final. Para " a palavra "is", cujo início tem um espaço e o final também tem um espaço. Removendo todos eles, ficamos com4um caractere com espaço, isso não significa que ele é uma palavra. Pelo menos no início ou no final deve haver um caractere não em branco para torná-lo uma palavra a ser contada.

POST "index_"4_analises/_analise
{
   "analyzer": "meu_analista_ingles",
   "text": "hoje o tempo está lindo"
{}

Após executar o código acima, obtemos a seguinte resposta:

{
   "tokens": [
      {
         "token": "today"
         "start_offset": 0,
         "end_offset": 5,
         "type": "",
         "position": 0
      },
      {
         "token": "s",
         "start_offset": 6,
         "end_offset": 7,
         "type": "",
         "position": 1
      },
      {
         "token": "weath",
         "start_offset": 8,
         "end_offset": 13,
         "type": "",
         "position": 2
      },
      {
         "token": "er",
         "start_offset": 13,
         "end_offset": 15,
         "type": "",
         "position": 3
      },
      {
         "token": "beaut",
         "start_offset": 19,
         "end_offset": 24,
         "type": "",
         "position": 5
      },
      {
         "token": "iful",
         "start_offset": 24,
         "end_offset": 28,
         "type": "",
         "position": 6
      {}
   ]]
{}

A tabela a seguir lista várias analisadores e suas descrições-

NúmeroAnalisadores e descrições
1

Analisador padrão(standard)

stopwords e max_token_length podem ser configurados para este analisador. Pelo padrão, a lista de stopwords está vazia e max_token_length é255.

2

Analisador simples(simple)

Este analisador é composto por tokenizer em minúsculas.

3

Analisador de espaço em branco (whitespace)

Este analisador é composto por marcadores de espaço

4

Analisador de parada (stop)

Pode configurar stopwords e stopwords_path. Pelo padrão, stopwords inicializa como stopwords em inglês e stopwords_path contém o caminho para o arquivo de texto que contém stopwords

Tokenizador

O gerador de tokens é usado para gerar tokens a partir do texto da Elasticsearch. Considerando espaços ou outros sinais de pontuação, o texto pode ser dividido em marcadores. A Elasticsearch possui muitos tokenizadores built-in que podem ser usados em analisadores personalizados.

A seguir, é mostrado um exemplo de tokenizer, que divide o texto em várias palavras ao encontrar caracteres não alfabéticos, mas também coloca todas as palavras em minúsculas, conforme mostrado-

POST _analyze
{
   "tokenizer": "lowercase",
   "text": "It Was a Beautiful Weather 5 Days ago.
{}

Após executar o código acima, obtemos a seguinte resposta:

{
   "tokens": [
      {
         "token": "it",
         "start_offset": 0,
         "end_offset": 2,
         "type": "word",
         "position": 0
      },
      {
         "token": "was",
         "start_offset": 3,
         "end_offset": 6,
         "type": "word",
         "position": 1
      },
      {
         "token": "a",
         "start_offset": 7,
         "end_offset": 8,
         "type": "word",
         "position": 2
      },
      {
         "token": "beautiful",
         "start_offset": 9,
         "end_offset": 18,
         "type": "word",
         "position": 3
      },
      {
         "token": "weather",
         "start_offset": 19,
         "end_offset": 26,
         "type": "word",
         "position": 4
      },
      {
         "token": "days",
         "start_offset": 29,
         "end_offset": 33,
         "type": "word",
         "position": 5
      },
      {
         "token": "ago",
         "start_offset": 34,
         "end_offset": 37,
         "type": "word",
         "position": 6
      {}
   ]]
{}

A lista de geradores de tokens e suas descrições estão conforme a tabela a seguir:

NúmeroTokenizadores e Descrições
1

Marcador Padrão (standard)

Este é construído com base no marcador sintático, max_token_length pode ser configurado para esse marcador.

2

Marcador NGram de Borda(edgeNGram)

Configurações como min_gram, max_gram, token_chars podem ser configuradas para esse marcador.

3

Marcador de Palavra-chave (keyword)

Isso gerará toda a entrada como saída, buffer_size pode ser configurado para isso.

4

Marcador de Letra (letter)

Isso capturará toda a palavra até encontrar um caractere não alfabético.