J'ai quelques questions concernant le mapping dans elasticsearch.
Pour le moment j'utilise MongoDBRiver pour insérer des données dans elasticsearch sans spécifier de mapping pour ces données. Elasticsearch créé donc un mapping automatiquement (si j'ai bien compris).
Quel serait l'intérêt pour moi de définir un mapping pour mes objets ?
Est-ce que définir un mapping pourrait améliorer l'indexation des documents notamment des tableaux ? (car j'ai des message du type "Objets in arrays are not well supported" dans Kibana).
Globalement quel est l'intéret de définir un mapping quand elasticsearch peut en créer un automatiquement ?
Le mapping n'est effectivement pas obligatoire. Il est seulement indispensable.
En effet, il permet de définir les analyseurs qui s'applique sur les champs de recherche et ces derniers ont une importance élevés sur la qualité de la recherche.
Par ailleurs, il peut aussi y avoir des cas particuliers où le premier objet se présentant à l'indexation possède un type en apparence plus précis qu'il n'est réellement. Dans ce cas, le mapping inféré par Elasticsearch sera
incorrect et les autres documents seront rejetés. C'est rare, c'est un cas de pas de bol, mais tu n'es pas à l'abri.
L'indexation des tableaux, est identique à celle des valeurs mono-valuées. Il n'y a aucune différence entre les deux au niveau d'Elasticsearch. S'ils sont mal gérés au niveau de Kibana, ils le seront très bien dans
Elasticsearch que tu définisses un mapping ou que Elasticsearch le faire pour toi.
En conclusion, c'est mieux de définir un mapping. Cependant, si la qualité des résultats de recherche est suffisante à ton goût sans ce travail, alors tu peux garder le fonctionnement par défaut. Autrement, si tes index sont créés automatiquement, tu peux utiliser les templates pour réconcilier dynamisme et qualité.
Il y a un article de blog sur le sujet qui doit être publié le 11 juin. Je donnerai le lien lorsqu'il sera en ligne.
Apache, Apache Lucene, Apache Hadoop, Hadoop, HDFS and the yellow elephant
logo are trademarks of the
Apache Software Foundation
in the United States and/or other countries.