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, удаление по запросу является частью ядра, и это должно работать из коробки.