Удалите 200 000+ документов из ElasticSearch, используя команду «Удалить по запросу» - PullRequest
0 голосов
/ 29 сентября 2018

ElasticSearch 6.2 - у меня есть приблизительно 216 000 документов, которые мне нужно удалить из одного из наших индексов ElasticSearch.У меня есть номер документа для каждого из документов, которые мне нужно удалить.

Я только когда-либо удалял один документ как таковой:

DELETE: http://{{elasticip}}:9200/{{index}}/_doc/101

Как мне выполнить удаление всех 216 000 документовсразу, учитывая, что я знаю все 216 000 значений для поля _id документов?

Я уже использовал update_by_query в ElasticSearch и вижу, что на самом деле доступна и функция delete_by_query, но я никогда не пытался это сделать.Скажем, документы, которые мне нужно удалить, это идентификаторы 1,2,3,4,5, и при условии, что вызов выглядит следующим образом:

POST http://{{elasticip}}:9200/{{index}}/_delete_by_query

как будет выглядеть тело?

РЕДАКТИРОВАТЬ 1: В ответ на @nitzien, я попытался следующие два вызова:

POST http://{{elasticip}}:9200/{{index}}/_delete_by_query

{
    "query": {
        "ids" : {
            "type" : "_doc",
            "values" : ["1", "2", "3", "4", "5"]
        }
    }
}

И

POST http://{{elasticip}}:9200/{{index}}/_delete_by_query

{
    "query": {
        "ids" : {
            "type" : "_id",
            "values" : ["1", "2", "3", "4", "5"]
        }
    }
}

Однако в обоих случаях я получаю "deleted": 0" в ответе,

Я подтвердил, что эти 5 идентификаторов определенно существуют в индексе, и я могу успешно удалить их, используя оператор DELETE, один за другим.

РЕДАКТИРОВАТЬ 2 - проблема решена -Мой тип документа в этом индексе не _doc, а _ssldoc, поэтому его необходимо было обновить в запросе, предоставленном @nitzien.Отмечен ответ Нитзиена как ответ.Спасибо.

1 Ответ

0 голосов
/ 29 сентября 2018

Вы можете использовать запрос типа this для удаления идентификаторов.Пожалуйста, не забудьте сделать резервную копию индекса или снимка эластичного поиска, прежде чем делать это.:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...