Удалить записи из Elasticsearch по запросу
Я пытаюсь удалить определенные записи даты из Elasticsearch. Мой запрос следующий:
curl -XDELETE 'http://localhost:9200/twitter/twit/_query' -d '
{
"filter" : {
"range" : {
"date_time" : { "from" : "2012-10-01 00:00:01", "to" : "2013-05-01 11:59:59"}
}
}
}'
но он не удаляет записи. поэтому он является правильным или есть некоторые другие способы удаления записей.
Ответы
Ответ 1
До 1.0, удаление по запросу не использует фильтры. Синтаксис напрямую связан с тем, что является блоком запроса в API поиска. Вместо этого вам нужно использовать запрос диапазона.
curl -XDELETE 'http://localhost:9200/twitter/twit/_query' -d '
{
"range" : {
"date_time" : { "from" : "2012-10-01 00:00:01", "to" : "2013-05-01 11:59:59"}
}
}'
Ответ 2
Удалить по запросу было устаревшим с версии 2.0. Используйте прокрутку/сканирование, чтобы найти все идентификаторы документов, которые вы хотите удалить, и вызовите delete с помощью идентификаторов
Устаревший в 1.5.3.
"Удалить по запросу будет удалено в версии 2.0: это проблематично, поскольку молча активирует обновление, которое может быстро вызвать OutOfMemoryError во время параллельной индексации, а также может вызывать первичную и репликацию становятся непоследовательными. Вместо этого используйте API прокрутки/сканирования, чтобы найти все сопоставляя идентификаторы, а затем выдаем массовый запрос для их удаления.
https://www.elastic.co/guide/en/elasticsearch/reference/1.7/docs-delete-by-query.html
Также есть плагин delete-by-query, который вы можете использовать.