Elasticsearch delete_by_query неправильное использование

Я использую 2 аналогичных метода ES для загрузки и удаления документов:

result = es.search(index='users_favourite_documents',
                   doc_type='favourite_document',
                   body={"query": {"match": {'user': user}}})

А также:

result = es.delete_by_query(index='users_favourite_documents',
                            doc_type='favourite_document',
                            body={"query": {"match": {'user': user}}})

Первый работает нормально и возвращает ожидаемые записи.
Второй бросает исключение:

"TransportError (404, '{
\ "Найдено \": ложь,
\ "_ Индекс \": \ "users_favourite_documents \",
\ "_ Типа \": \ "favourite_document \",
\ "_ id \": \ "_ запрос \", \ "_ версия \": 1,
\ "_ осколки \":{\"всего \":2,\"успешно \":2,\"не удалось \":0}}')"

Что я делаю неправильно?

2 ответа

Я использовал версию 6.2.0 Elastic Stack, и использование API работает для удаления следующим образом:

es.delete_by_query(index="index_name", doc_type='doc_type', body={"query":{"match": {"message": "message_value"}}})

если ваше значение INT, удалите "" в message_value.

Если вы используете ES 2.x, вам нужно убедиться, что вы сначала установили плагин удаления по запросу:

В вашей папке ES_HOME запустите это:

bin/plugin install delete-by-query

Затем перезапустите ES и ваш es.delete_by_query(...) звонок будет работать.

Если вы используете ES 1.x, удаление по запросу является частью ядра, и это должно работать из коробки.

Другие вопросы по тегам