Questions mapping

Bonjour !

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 ?

Merci beaucoup !

Bonjour,

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.

A+

Bonjour,

Le blog dont je parlais est sorti plus tôt que prévu : http://blog.ippon.fr/2015/06/09/elasticsearch-de-limportance-du-mapping/

Merci pour ta réponse !

J'ai en effet du rajouter à mon application un mapping pour pouvoir gérer entre autres les objets "nested".
Je vais jeter un oeil a l'article, merci.