# Mapping

**URL:** <https://discuss.elastic.co/t/mapping/281242>\
**Category:** Discussions en français\
**Created:** [August 12, 2021, 5:51pm UTC](https://discuss.elastic.co/t/mapping/281242 "2021-08-12T17:51:29Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![Hind](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/hind/32/92669_2.png) [@Hind](https://discuss.elastic.co/u/Hind)\
**Post date:** [August 12, 2021, 5:51pm UTC](https://discuss.elastic.co/t/mapping/281242/1 "2021-08-12T17:51:29Z")

</div>

Bonjour, j'ai une petite question.

j'utilise logstash pour importer un fichier csv vers elasticsearch, comment pourrais-je créer mon propre mapping ? Je trouve souvent des tutos qui montrent comment le faire mais juste dans des cas ou ils insèrent des documents un par un (via python ou la console de kibana) et non pas dans les cas où l'on insère tous les documents en même temps.

Merci

---

<div class="post-metadata">

**Author:** ![Cad](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/cad/32/86661_2.png) [@Cad](https://discuss.elastic.co/u/Cad)\
**Post date:** [August 20, 2021, 1:19pm UTC](https://discuss.elastic.co/t/mapping/281242/2 "2021-08-20T13:19:55Z")

</div>

Bonjour,

> [@Hind](#):
>
> non pas dans les cas où l'on insère tous les documents en même temps.

Vous envoyez tous les documents en même temps ou vous envoyer tout le contenu d'un fichier csv en même temps ?

Est-il possible de voir vos données et la manière dont vous avez configuré le fichier .conf de logstash ?

---

<div class="post-metadata">

**Author:** ![Hind](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/hind/32/92669_2.png) [@Hind](https://discuss.elastic.co/u/Hind)\
**Post date:** [August 21, 2021, 9:00pm UTC](https://discuss.elastic.co/t/mapping/281242/3 "2021-08-21T21:00:02Z")

</div>

Je veux envoyer tout le contenu du fichier CSV à la fois.

la configuration:

```auto
input { stdin {}
        file {
	         path => "C:/elastic_stack/data/les_hotels_classes_update.csv"
			 start_position => "beginning"
			 sincedb_path => "NUL"
	          }
     }
filter {
  		
        csv {
		    separator => ";"
			columns => ["date_de_classement","departement","classement","nom_commercial","adresse","code_postal","commune","telephone","courriel","site_internet","capacite_d_accueil_personnes","nombre_de_chambres","typologie_etablissement","geo"]
			}
			grok{
		      match => {"message" => "%{DATE:date_de_classement}\;%{INT:departement}\;%{DATA:classement}\;%{DATA:nom_commercial}\;%{DATA:adresse}\;%{INT:code_postal}\;%{DATA:commune}\;%{DATA:telephone}\;%{EMAILADDRESS:courriel}\;%{DATA:site_internet}\;%{INT:capacite_d_accueil_personnes}\;%{INT:nombre_de_chambres}\;%{DATA:typologie_etablissement}\;%{DATA:geo}"}	
			}
       }

output {
         elasticsearch {
                        hosts => "http://localhost:9200"
			            index => "test_mapping_fr_hotels"
                       }		
         stdout { codec => rubydebug }					   
        }

```

---

<div class="post-metadata">

**Author:** ![Cad](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/cad/32/86661_2.png) [@Cad](https://discuss.elastic.co/u/Cad)\
**Post date:** [August 25, 2021, 7:51pm UTC](https://discuss.elastic.co/t/mapping/281242/4 "2021-08-25T19:51:52Z")

</div>

Si ce que vous voulez dire par "envoyer tout le contenu du fichier CSV à la fois" c'est que le contenu du fichier soit envoyé ligne par ligne, le tout référencé sous un même index. Alors oui la configuration est correct.

Par contre attention, vos deux plugin dans la partie filter font la meme chose. Le plugin csv va créer les champs et pour chacun de ces champs, le plugin csv va lui attribuer une valeur grace au séparateur que vous avez spécifié. Le plugin grok lui va remplir ces même champs (puisqu'ils ont le même nom dans le plugin csv et dans le plugin grok) avec le contenu de la phrase si elle respecte la regex mise en place. Donc vous écrivez deux fois la même valeur dans chaque champs.

Pour en revenir au mapping, ici il vous faudrait définir le type de chaque colonne de votre csv.  
C'est à dire donner à `date_de_classement` le type des données situé dans la première colonne de votre csv. Et faire cela pour chaque champs.

---

<div class="post-metadata">

**Author:** ![Hind](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/hind/32/92669_2.png) [@Hind](https://discuss.elastic.co/u/Hind)\
**Post date:** [September 1, 2021, 11:44am UTC](https://discuss.elastic.co/t/mapping/281242/5 "2021-09-01T11:44:32Z")

</div>

Bonjour,  
Merci infiniment pour votre réponse.

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [September 29, 2021, 11:44am UTC](https://discuss.elastic.co/t/mapping/281242/6 "2021-09-29T11:44:36Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
