Удалить записи из 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, который вы можете использовать.