# Avoid duplicate insertions

**URL:** <https://discuss.elastic.co/t/avoid-duplicate-insertions/374809>\
**Category:** Elasticsearch\
**Created:** [February 20, 2025, 11:42am UTC](https://discuss.elastic.co/t/avoid-duplicate-insertions/374809 "2025-02-20T11:42:16Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Cristina\_Marletta\_Li](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/cristina_marletta_li/32/137793_2.png) [@Cristina\_Marletta\_Li](https://discuss.elastic.co/u/Cristina_Marletta_Li)\
**Post date:** [February 20, 2025, 11:42am UTC](https://discuss.elastic.co/t/avoid-duplicate-insertions/374809/1 "2025-02-20T11:42:16Z")

</div>

Hi,  
What is the best method to avoid duplicate insertions (based on one or two fields) in an index? I am thinking of a mechanism like Primary Key of relational databases.

Thanks for your suggestions.

Cristina

---

<div class="post-metadata">

**Author:** ![RainTown](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/raintown/32/140206_2.png) [@RainTown](https://discuss.elastic.co/u/RainTown)\
**Post date:** [February 20, 2025, 11:52am UTC](https://discuss.elastic.co/t/avoid-duplicate-insertions/374809/2 "2025-02-20T11:52:14Z")

</div>

The best method is avoiding it in the first place (which is also the answer for relational databases),

What do you want to actually do with the "second" document that arrives, just bin it, overwrite the existing document that matches your 2 fields, raise an alarm, ... ? Is there a time series (meant in most general sense) element to the documents?

There are workarounds to do what I think you are asking, but many don't (easily) scale.

---

<div class="post-metadata">

**Author:** ![Cristina\_Marletta\_Li](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/cristina_marletta_li/32/137793_2.png) [@Cristina\_Marletta\_Li](https://discuss.elastic.co/u/Cristina_Marletta_Li)\
**Post date:** [February 20, 2025, 1:51pm UTC](https://discuss.elastic.co/t/avoid-duplicate-insertions/374809/3 "2025-02-20T13:51:12Z")

</div>

actually, the document with duplicate key is exactly the same. So can I overwrite it?

---

<div class="post-metadata">

**Author:** ![elasticforme](https://avatars.discourse-cdn.com/v4/letter/e/f05b48/32.png) [@elasticforme](https://discuss.elastic.co/u/elasticforme)\
**Post date:** [February 20, 2025, 1:58pm UTC](https://discuss.elastic.co/t/avoid-duplicate-insertions/374809/4 "2025-02-20T13:58:25Z")

</div>

if your document is uniq use "\_id" as custom field. and elastic will overwrite.

but overwrite is little different. it will first delete the record and insert it. two operations.

in this case you can't use datastream. you have to use regular index
