¿Por qué se eliminaron los tipos de mapeo ES en ES V6?.0?

¿Por qué se eliminaron los tipos de mapeo ES en ES V6?.0?

¿Qué son los tipos de mapeo??

En ElasticSearch, cada documento pertenece a un índice y un tipo. Un índice puede considerarse como una base de datos, mientras que un tipo puede verse 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 la usuario tipo:


"ID": 1,
"Título": "Linuxhint",
"Enlace": "https: // linuxhint.com/"

Mientras buscaba 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, Sitio web/_Search

"consulta":
"fósforo":
"ID": 1


El _tipo el campo de los documentos se combinó con su _identificación para generar un _UID campo así documentos con el mismo _identificación podría existir en un solo índice.

Lea el tutorial de elasticsearch para principiantes para una comprensión más profunda de la arquitectura de elasticsearch y comience con él con install elasticsearch en ubuntu.

¿Por qué se eliminan los tipos de mapeo??

Al igual que lo que dijimos anteriormente mientras explicaba cómo el índice y los tipos eran similares a una base de datos y una tabla en una base de datos relacional, Elasticsearch Team pensó lo mismo, pero este no era 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 las mismas, no tienen relación entre ellas. Este no es el caso con los campos en los tipos de mapeo como en ES, Los campos con el mismo nombre se tratan como el mismo campo de motor Lucene 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 que puede provocar frustración y confusión.
  • Almacenamiento de entidades sin campos en común detiene a Lucene para comprimir los documentos de manera efectiva.

Alternativas a los tipos de mapeo

Aunque se ha tomado la decisión, aún 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 cada índice, Lucene puede aplicar fácilmente sus propias técnicas de compresión de datos.
  • Ahora que todos los documentos en un índice tienen los mismos campos, las habilidades de búsqueda de texto completo aumentan fenomenalmente a medida que la puntuación de cada documento ha aumentado.

Otra alternativa para separar los datos es mantener una costumbre _tipo campo en cada documento que insertamos, como:

Pon DB_Name/DOC/123

"Tipo": "Usuario",
"ID": 123,
"Nombre": "Shubham",
"Sitio web": 1

Poner db_name/doc/sitio web

"Tipo": "Sitio web",
"ID": 1,
"Título": "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 los tipos de mapeo

Como eliminar los tipos de mapeo es un gran cambio, ES Team está haciendo el proceso lentamente. Aquí hay un horario para el despliegue extraído de elástico.co:

  • Elasticsearch 7.X
    • El tipo Los parámetros en las URL son opcionales. Por ejemplo, indexar un documento ya no requiere un tipo de documento.
    • El _por defecto_ Se elimina el tipo de mapeo.
  • Elasticsearch 8.X
    • El tipo El parámetro ya no se admite en URL.
    • El include_type_name El parámetro predeterminado es FALSO.
  • Elasticsearch 9.X
    • El include_type_name Se elimina el parámetro.

Conclusión

En esta lección, observamos por qué se eliminaron los tipos de mapeo Elasticsearch y no se respaldaron en versiones próximas.