# Mettre à jour / remplacer les données de l'index

**URL:** https://discuss.elastic.co/t/mettre-a-jour-remplacer-les-donnees-de-lindex/223307
**Category:** Discussions en français
**Created:** [March 12, 2020, 10:17am UTC](https://discuss.elastic.co/t/mettre-a-jour-remplacer-les-donnees-de-lindex/223307 "2020-03-12T10:17:34Z")
**Posts on this page:** 9
**Page:** 1

<div class="post-metadata">

### Author: ![dbviz](https://avatars.discourse-cdn.com/v4/letter/d/e19b73/32.png) [@dbviz](https://discuss.elastic.co/u/dbviz)
#### Post date: [March 12, 2020, 10:17am UTC](https://discuss.elastic.co/t/mettre-a-jour-remplacer-les-donnees-de-lindex/223307/1 "2020-03-12T10:17:34Z")

</div>

Bonjour,

J'ai une entrée sous logstash par commande. La commande est programmée toutes les 5 minutes qui me renvoi des résultats anciens et de nouvelles données (avec des champs dates, user, webservice).  
Pour éviter les doublons, je voudrai donc indexer seulement les nouveaux résultats de mon input.

J'ai vu qu'on pouvait paramétrer l'action de l'output par un "update"  
[https://www.elastic.co/guide/en/logstash/6.2/plugins-outputs-elasticsearch.html#plugins-outputs-elasticsearch-action](https://www.elastic.co/guide/en/logstash/6.2/plugins-outputs-elasticsearch.html#plugins-outputs-elasticsearch-action)

```auto
    index => "XXX-%{+YYYY-MM-dd}"
				      hosts => ["XXXXXXX"]
				      template_name =>"XXXX"
			     document_id => "log"
					  doc_as_upsert => true
					  action => "update"

```

Le problème c'est que ça ne marche pas, il n'y a aucunes insertions de documents.

Quelle est la meilleure façon de faire pour éviter d’insérer des doublons à chaque indexation ? Mettre à jour les données ou les remplacer, et comment ?

Merci de l'aide 😀

---

<div class="post-metadata">

### Author: ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)
#### Post date: [March 12, 2020, 10:45am UTC](https://discuss.elastic.co/t/mettre-a-jour-remplacer-les-donnees-de-lindex/223307/2 "2020-03-12T10:45:33Z")

</div>

Tu peux utiliser le même `_id` de document plutôt que de faire un update.  
Ainsi les documents seront écrasés.

Autre solution, réindexer tout dans un nouvel index et utiliser un alias pour switcher de l'index A vers l'index B quand c'est fini.

---

<div class="post-metadata">

### Author: ![dbviz](https://avatars.discourse-cdn.com/v4/letter/d/e19b73/32.png) [@dbviz](https://discuss.elastic.co/u/dbviz)
#### Post date: [March 12, 2020, 12:19pm UTC](https://discuss.elastic.co/t/mettre-a-jour-remplacer-les-donnees-de-lindex/223307/3 "2020-03-12T12:19:55Z")

</div>

Merci pour ta réactivité.

J'ai opté pour la première solution et ça marche, j'ai modifié ma sortie

```auto
                        index => "XXX-%{+YYYY-MM-dd}"
			hosts => ["XXXXXXX"]
		        #template_name =>"XXXX"
			document_id => "%{date}"
			doc_as_upsert => true
			#action => "update"

```

Cependant, quand j'ai 2 lignes avec les même dates, ça m’insère qu'un seul et c'est normal vu que mon `document_id` compare la date.

Exemple d'entrée:  
`Fri Jan 24 08:30:21 CET 2020;User12;NEW.XXX.XXXX`

Quel `_id` choisir pour que se soit plus pertinent ?

---

<div class="post-metadata">

### Author: ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)
#### Post date: [March 12, 2020, 1:29pm UTC](https://discuss.elastic.co/t/mettre-a-jour-remplacer-les-donnees-de-lindex/223307/4 "2020-03-12T13:29:41Z")

</div>

Tu peux calculer un hash des champs déterminants. Avec ceci: [https://www.elastic.co/guide/en/logstash/current/plugins-filters-fingerprint.html](https://www.elastic.co/guide/en/logstash/current/plugins-filters-fingerprint.html)

Et utiliser le résultat comme `_id`.

Je pense que tu peux aussi supprimer cette ligne:

```
doc_as_upsert => true
```

---

<div class="post-metadata">

### Author: ![dbviz](https://avatars.discourse-cdn.com/v4/letter/d/e19b73/32.png) [@dbviz](https://discuss.elastic.co/u/dbviz)
#### Post date: [March 12, 2020, 2:38pm UTC](https://discuss.elastic.co/t/mettre-a-jour-remplacer-les-donnees-de-lindex/223307/5 "2020-03-12T14:38:31Z")

</div>

Merci @dadoonet pour les explications 👍

J'ai donc modifié mon fichier .conf

```auto
filter {
 ...
			 fingerprint {
					method => 'SHA1'
					key => '00000000'
			}
  }

output {
		elasticsearch {
			 ...
			document_id => "%{fingerprint}"
 }
}

```

... et ça marche. Je n'ai que les nouvelles données qui s'ajoutent, pas de doublons 😁

---

<div class="post-metadata">

### Author: ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)
#### Post date: [March 12, 2020, 3:30pm UTC](https://discuss.elastic.co/t/mettre-a-jour-remplacer-les-donnees-de-lindex/223307/6 "2020-03-12T15:30:26Z")

</div>

Sache néanmoins que tu reindexes quand même tous les anciens documents.

---

<div class="post-metadata">

### Author: ![dbviz](https://avatars.discourse-cdn.com/v4/letter/d/e19b73/32.png) [@dbviz](https://discuss.elastic.co/u/dbviz)
#### Post date: [March 12, 2020, 3:53pm UTC](https://discuss.elastic.co/t/mettre-a-jour-remplacer-les-donnees-de-lindex/223307/7 "2020-03-12T15:53:00Z")

</div>

Donc la meilleure façon de faire est de créer un alias ?

---

<div class="post-metadata">

### Author: ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)
#### Post date: [April 3, 2020, 3:40pm UTC](https://discuss.elastic.co/t/mettre-a-jour-remplacer-les-donnees-de-lindex/223307/8 "2020-04-03T15:40:09Z")

</div>

Je ne comprends pas la remarque. Quel rapport avec l'alias?  
Tu veux dire qu'il vaut mieux indexer à nouveau dans un index vierge et utiliser un alias pour passer du vieil index au nouveau?

Oui, je pense.

---

<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: [May 1, 2020, 3:40pm UTC](https://discuss.elastic.co/t/mettre-a-jour-remplacer-les-donnees-de-lindex/223307/9 "2020-05-01T15:40:19Z")

</div>

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