Elasticsearch
Analizadores
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.
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.
Tallo :
El uso de la derivación en analizadores nos permite usar palabras base para verbos modificados como
Palabra Modificaciones exigir requisito requerido
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
Estándar
Sencillo
Espacio en blanco
Detener
Palabra clave
Modelo
Idioma
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"]
}
}
}
}