Jeremy Thille
Jeremy Thille

Reputation: 26370

Elasticsearch - How to delete a list of documents?

I have an array of _id.

On this page I found out how to retrieve a list of documents from it :

GET ads/_mget
{
   "ids": [ "586213440e7d2c7f10fe2574",
            "586213440e7d2c7f10fe2575",
            "586213450e7d2c7f10fe2576",
            "586213450e7d2c7f10fe2577" ]
}

This works and returns a list of 4 full documents, as expected.

(sidenote) I find it weird to have to write "ids" in the query, when it actually acts on the "_id" field. (end sidenote)

Now I can't figure out how to DELETE these documents from the same _id list.

I tried DELETE ads/_mget but I get an error : No handler found for uri [/ads/_mget] and method [DELETE]

I tried _mdelete instead of _mget but it doesn't seem to exist.

I also tried

DELETE ads
{
   "ids": [ "586213440e7d2c7f10fe2574",
            "586213440e7d2c7f10fe2575",
            "586213450e7d2c7f10fe2576",
            "586213450e7d2c7f10fe2577" ]
}

...but this... just deletes EVERYTHING and I have to reindex the database.

Upvotes: 13

Views: 15394

Answers (1)

Pavel Vasilev
Pavel Vasilev

Reputation: 1042

You can always use feature of Delete By Query and supply payload like:

POST ads/_delete_by_query
{
    "query" : {
        "terms" : {
            "_id" : 
              [ "586213440e7d2c7f10fe2574",
              "586213440e7d2c7f10fe2575",
              "586213450e7d2c7f10fe2576",
              "586213450e7d2c7f10fe2577" ]
        }
    }
}

For more infromation about terms query please follow https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-terms-query.html

Upvotes: 24

Related Questions