Pourquoi les types de mappage ES ont-ils été supprimés dans ES V6.0?

Pourquoi les types de mappage ES ont-ils été supprimés dans ES V6.0?

Que sont les types de cartographie?

Dans Elasticsearch, chaque document appartient à un index et à un type. Un index peut être considéré comme une base de données alors qu'un type peut être considéré comme un tableau par rapport à une base de données relationnelle. Un type de cartographie était une partition logique d'un objet avec d'autres objets qui appartenaient à d'autres types de mappage dans le même index.

Chaque type de cartographie a ses propres champs. Par exemple, un type de utilisateur peut avoir des champs suivants:


"ID": 123,
"Nom": "Shubham",
"Site Web": 1

Un autre type de cartographie dans le même index site Internet peut avoir des champs suivants qui sont complètement différents du utilisateur taper:


"id": 1,
"Title": "Linuxhint",
"lien": "https: // linuxhint.com / "

Lors de la recherche d'un document dans un index, la recherche aurait pu être limitée à un seul document en spécifiant un seul champ comme suit:

Obtenez idx_name / utilisateur, site Web / _Search

"mettre en doute":
"correspondre":
"id": 1


Le _taper Le champ des documents a été combiné avec son _identifiant pour générer un _UID le champ donc documente avec le même _identifiant pourrait exister dans un seul indice.

Lisez le didacticiel Elasticsearch pour les débutants pour une compréhension plus profonde de l'architecture Elasticsearch et commencez avec l'installation elasticsearch sur Ubuntu.

Pourquoi les types de cartographie sont-ils supprimés?

Tout comme ce que nous avons dit ci-dessus tout en expliquant comment l'index et les types étaient similaires à une base de données et à une table dans une base de données relationnelle, l'équipe Elasticsearch a pensé la même chose, mais ce n'était pas le cas car Lucene Engine ne suit pas la même analogie. C'est pour les raisons suivantes:

  • Dans une base de données relationnelle, les tableaux sont indépendants les uns des autres et le nom des colonnes, même s'ils sont les mêmes n'ont pas de relation entre eux. Ce n'est pas le cas avec les champs de types de cartographie comme dans ES, Les champs avec le même nom sont traités comme le même champ de moteur lucene en interne.
  • Dans l'exemple ci-dessus, le champ _identifiant dans utilisateur type et site Internet Le type est stocké dans le même champ et devrait avoir exactement le même type qui peut conduire à la frustration et à la confusion.
  • Le stockage des entités sans champ en commun s'arrête Lucene pour comprimer efficacement les documents.

Alternatives aux types de cartographie

Bien que la décision ait été prise, nous devons encore séparer différents types de données. Maintenant, la première alternative est de Documents séparés dans leur propre index qui présente deux avantages:

  • Maintenant que les données sont courantes dans chaque index, Lucene peut très facilement appliquer ses propres techniques de compression de données.
  • Maintenant que tous les documents d'un index ont les mêmes champs, les capacités de recherche en texte intégral augmentent phénoménalement à mesure que la notation de chaque document a augmenté.

Une autre alternative à la séparation des données est le maintien d'une coutume _taper Champ dans chaque document que nous insérons, comme:

Mettre db_name / doc / 123

"type": "utilisateur",
"ID": 123,
"Nom": "Shubham",
"Site Web": 1

Mettez DB_NAME / DOC / Site Web

"Type": "Site Web",
"id": 1,
"Title": "Linuxhint",
"lien": "https: // linuxhint.com / "

C'est une excellente utilisation si vous cherchez une solution personnalisée complète.

Schéma pour la suppression des types de cartographie

Comme la suppression des types de cartographie est un grand changement, l'équipe ES fait lentement le processus. Voici un calendrier pour le déploiement extrait de l'élastique.co:

  • Elasticsearch 7.X
    • Le taper Le paramètre dans les URL est facultatif. Par exemple, l'indexation d'un document ne nécessite plus de type de document.
    • Le _défaut_ Le type de mappage est supprimé.
  • Elasticsearch 8.X
    • Le taper Le paramètre n'est plus pris en charge dans les URL.
    • Le include_type_name Le paramètre par défaut FAUX.
  • Elasticsearch 9.X
    • Le include_type_name Le paramètre est supprimé.

Conclusion

Dans cette leçon, nous avons examiné pourquoi les types de cartographie Elasticsearch ont-ils été supprimés et seront complètement non pris en charge dans les versions à venir.