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.Отмечен ответ Нитзиена как ответ.Спасибо.