Удалить все документы из индекса / типа без удаления типа
Я знаю, что можно удалить все документы из определенного типа с помощью deleteByQuery.
пример:
curl -XDELETE 'http://localhost:9200/twitter/tweet/_query' -d '{
"query" : {
"term" : { "user" : "kimchy" }
}
}'
но у меня нет термина и просто хочу удалить все документы из этого типа, независимо от того, какой термин. Какова наилучшая практика для достижения этой цели? Пустой термин не работает.
14 ответов:
Я считаю, что если вы объедините delete by query с match all, он должен делать то, что вы ищете, что-то вроде этого (используя Ваш пример):
curl -XDELETE 'http://localhost:9200/twitter/tweet/_query' -d '{ "query" : { "match_all" : {} } }'или вы можете просто удалить тип:
curl -XDELETE http://localhost:9200/twitter/tweet
плагин Delete-By-Query был удален в пользу новой реализации Delete by Query API в core. читать здесь
curl -XPOST 'localhost:9200/twitter/tweet/_delete_by_query?conflicts=proceed&pretty' -d' { "query": { "match_all": {} } }'
Из ElasticSearch 5.X, delete_by_query API есть по умолчанию
POST: http://localhost:9200/index/type/_delete_by_query{ "query": { "match_all": {} } }
комментарий Торстена Энгельбрехта в ответе Джона Петронса расширен:
curl -XDELETE 'http://localhost:9200/twitter/tweet/_query' -d '{ "query": { "match_all": {} } }'(Я не хотел редактировать ответ Джона, так как он получил upvotes и установлен как ответ, и я мог бы ввести ошибку)
начиная с Elasticsearch 2.X удалить не допускается, так как документы остаются в индексе, вызывая повреждение индекса.
вы можете удалить документы из типа со следующим запросом:
POST /index/type/_delete_by_query { "query" : { "match_all" : {} } }Я тестировал этот запрос в Kibana и Elastic 5.5.2
Примечание ES2+
начиная с ES 1.5.3 API удаления по запросу устарел и полностью удаляется с ES 2.0
вместо API,удалить по запросу теперь плагин.
для использования плагина Delete By Query необходимо установить плагин на всех узлах кластера:
sudo bin/plugin install delete-by-queryвсе узлы должны быть перезапущены после установка.
Использование плагина такое же, как и старый API. Вам не нужно ничего менять в своих запросах - этот плагин просто заставит их работать.
*для получения полной информации о том, почему API был удален, вы можете прочитать больше здесь.
(репутация недостаточно высока, чтобы комментировать) Вторая часть ответа Джона Петроне работает - не требуется запрос. Он будет удалить все документы, содержащиеся в этом типе, но это может просто быть воссоздан при индексировании нового документа этого типа.
просто для уточнения:
$ curl -XDELETE 'http://localhost:9200/twitter/tweet'Примечание: этот тут удалить сопоставление! Но как упоминалось ранее, он может быть легко переназначены с помощью создания нового документа.
у вас есть такие варианты:
1) удалить весь индекс:
curl -XDELETE 'http://localhost:9200/indexName'пример:
curl -XDELETE 'http://localhost:9200/mentorz'более подробную информацию вы можете найти здесь -https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-delete-index.html
2) удалить запрос для тех, кто соответствует:
curl -XDELETE 'http://localhost:9200/mentorz/users/_query' -d '{ "query": { "match_all": {} } }'здесь mentorz - это имя индекса и пользователи тип
просто добавить пару копеек к этому.
The "delete_by_query" упомянутый в верхней части по-прежнему доступен в качестве плагина в elasticsearch 2.x.
хотя в последней предстоящей версии 5.x он будет заменен на "удалить по запросу api"
Elasticsearch 2.3 опция
action.destructive_requires_name: trueв elasticsearch.yml do the trip
curl -XDELETE http://localhost:9200/twitter/tweet
Если вы хотите удалить документ по дате. Вы можете использовать консоль kibana (V. 6. 1. 2)
POST index_name/_delete_by_query { "query" : { "range" : { "sendDate" : { "lte" : "2018-03-06" } } } }
приведенные выше ответы больше не работают с ES 6.2.2 из-за строгая проверка типа содержимого для запросов Elasticsearch REST. Элемент
curlкоманда, которую я использовал этот:curl -H'Content-Type: application/json' -XPOST 'localhost:9200/yourindex/_doc/_delete_by_query?conflicts=proceed' -d' { "query": { "match_all": {} }}'
Comments