¿Qué son los tipos de mapeo??
En Elasticsearch, cada documento pertenece a un índice y un tipo. Un índice se puede considerar como una base de datos, mientras que un tipo se puede ver como una tabla en comparación con una base de datos relacional. Un tipo de mapeo era una partición lógica de un objeto con otros objetos que pertenecían a otros tipos de mapeo en el mismo índice.
Cada tipo de mapeo tiene sus propios campos. Por ejemplo, un tipo de usuario puede tener los siguientes campos:
"id": 123,
"nombre": "Shubham",
"sitio web": 1
Otro tipo de mapeo en el mismo índice sitio web puede tener los siguientes campos que son completamente diferentes de los usuario tipo:
"id": 1,
"title": "LinuxHint",
"enlace": "https: // linuxhint.com / "
Al buscar un documento en un índice, la búsqueda podría haberse limitado a un solo documento especificando un solo campo como:
OBTENER idx_name / user, website / _search"consulta":
"partido":
"id": 1
La _tipo campo de los documentos se combinó con su _identificación para generar un _uid campo para documentos con el mismo _identificación podría existir en un solo índice.
Lea el tutorial de Elasticsearch para principiantes para obtener una comprensión más profunda de la arquitectura Elasticsearch y comience a usarla con Instalar ElasticSearch en Ubuntu.
¿Por qué se eliminan los tipos de asignación??
Al igual que lo que dijimos anteriormente al explicar cómo el índice y los tipos eran similares a una base de datos y una tabla en una base de datos relacional, el equipo de Elasticsearch pensó lo mismo, pero este no fue el caso, ya que Lucene Engine no sigue la misma analogía. Esto se debe a las siguientes razones:
- En una base de datos relacional, las tablas son independientes entre sí y el nombre de las columnas, incluso si son iguales, no tienen relación entre ellas. Este no es el caso con campos en tipos de mapeo como en ES, los campos con el mismo nombre se tratan como el mismo campo de Lucene Engine internamente.
- En el ejemplo anterior, el campo _identificación en usuario tipo y sitio web El tipo se almacena en el mismo campo y debe tener exactamente el mismo tipo, lo que puede generar frustración y confusión.
- El almacenamiento de entidades sin campos en común detiene a Lucene para comprimir documentos de manera efectiva.
Alternativas a los tipos de mapeo
Aunque se ha tomado la decisión, todavía necesitamos separar diferentes tipos de datos. Ahora, la primera alternativa es documentos separados en su propio índice que tiene dos ventajas:
- Ahora que los datos son comunes en todos los índices, Lucene puede aplicar muy fácilmente sus propias técnicas de compresión de datos.
- Ahora que todos los documentos de un índice tienen los mismos campos, las capacidades de búsqueda de texto completo aumentan enormemente a medida que aumenta la puntuación de cada documento.
Otra alternativa a la separación de datos es mantener una _tipo campo en cada documento que insertamos, como:
PUT nombre_bd / doc / 123"tipo": "usuario",
"id": 123,
"nombre": "Shubham",
"sitio web": 1
PUT db_name / doc / sitio web
"tipo": "sitio web",
"id": 1,
"title": "LinuxHint",
"enlace": "https: // linuxhint.com / "
Este es un uso excelente si está buscando una solución personalizada completa.
Programación para la eliminación de tipos de mapeo
Como eliminar los tipos de mapeo es un gran cambio, el equipo de ES está haciendo el proceso lentamente. Aquí hay un cronograma para el despliegue extraído de elástico.co:
- Elasticsearch 7.X
- La tipo el parámetro en las URL son opcionales. Por ejemplo, indexar un documento ya no requiere un tipo de documento.
- La _defecto_ se elimina el tipo de mapeo.
- Elasticsearch 8.X
- La tipo el parámetro ya no es compatible con las URL.
- La include_type_name el parámetro predeterminado es falso.
- Elasticsearch 9.X
- La include_type_name se elimina el parámetro.
Conclusión
En esta lección, analizamos por qué se eliminaron los tipos de mapeo de Elasticsearch y no serán compatibles en las próximas versiones.