Buscar..


Observaciones

Los analizadores toman el texto de un campo de cadena y generan tokens que se utilizarán al realizar consultas.

Un analizador opera en una secuencia:

  • CharFilters (cero o más)
  • Tokenizer (uno)
  • TokenFilters (cero o más)

El analizador se puede aplicar a las asignaciones de modo que cuando los campos se indexan, se realiza por token en lugar de en la cadena en su conjunto. Al realizar consultas, la cadena de entrada también se ejecutará a través del Analizador. Por lo tanto, si normaliza el texto en el Analizador, siempre coincidirá incluso si la consulta contiene una cadena no normalizada.

Cartografía

Se puede aplicar un Analizador a un mapeo usando "analizador", de manera predeterminada se usa el Analizador "estándar". Alternativamente, si no desea que se use ningún analizador (porque la tokenización o la normalización no serían útiles) puede especificar "índice": "not_analyzed"

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

Campos múltiples

A veces puede ser útil tener múltiples índices distintos de un campo con diferentes analizadores. Puede utilizar la capacidad de campos múltiples para hacerlo.

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"
            }
          }
        }
      }
    }
  }
}

Al realizar consultas, en lugar de simplemente usar "user.name" (que en este caso aún usaría el analizador estándar), puede usar "user.name.special" o "user.name.unanalyzed". Tenga en cuenta que el documento permanecerá sin cambios, esto solo afecta la indexación.

Analizadores

El análisis en elasticsearch entra en contexto cuando está dispuesto a analizar los datos en su índice.

Los analizadores nos permiten realizar lo siguiente:

  • Abreviaturas
  • Tallo
  • Manejo tipográfico

Estaremos mirando a cada uno de ellos ahora.

  1. Abreviaturas :

    Usando analizadores, podemos decirle a elasticsearch cómo tratar abreviaturas en nuestros datos, es decir, dr => Doctor, por lo que cada vez que busquemos una palabra clave de doctor en nuestro índice, elasticsearch también devolverá los resultados que dr ha mencionado en ellos.

  1. Tallo :

    El uso de la derivación en analizadores nos permite usar palabras base para verbos modificados como

    Palabra Modificaciones
    exigir requisito requerido
  1. Manejo de errores tipográficos :

    Los analizadores también brindan manejo de errores tipográficos mientras preguntan si estamos buscando una palabra en particular, digamos 'resurrección', luego elasticsearch devolverá los resultados en los cuales están presentes los errores tipográficos.

    Palabra Modificaciones
    Resurrección resurección, resurección

Analizadores en Elasticsearch

  1. Estándar

  2. Sencillo

  3. Espacio en blanco

  4. Detener

  5. Palabra clave

  6. Modelo

  7. Idioma

  8. Bola de nieve

Ignorar el analizador de casos

A veces, es posible que tengamos que ignorar el caso de nuestra consulta, con respecto a la coincidencia en el documento. En este caso, se puede usar un analizador para ignorar el caso durante la búsqueda. Cada campo deberá contener este analizador en su propiedad para que funcione:

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


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow