Удаление данных из ElasticSearch
Я новичок в ElasticSearch. Я пытаюсь выяснить, как удалить данные из ElasticSearch. Я удалил свои индексы. Однако это, по-видимому, фактически не снимает данные. Другой материал, который я видел, указывает на функцию " Удалить по запросу". Тем не менее, я даже не уверен, на что запрос. Я знаю свои индексы. По сути, я хотел бы выяснить, как сделать
DELETE FROM [Index]
Из PostMan в Chrome. Однако мне не повезло. Кажется, что независимо от того, что я делаю, данные зависают. До сих пор я успешно удалял индексы с помощью DELETE HTTP Verb в PostMan и используя URL-адрес:
http://localhost:9200/[indexName]
Однако это, по-видимому, фактически не удаляет данные (aka docs).
Ответы
Ответ 1
Вы можете удалить cURL
или визуально, используя один из многих инструментов, которые энтузиасты с открытым исходным кодом создали для Elasticsearch.
Использование cURL
curl -XDELETE localhost:9200/index/type/documentID
например
curl -XDELETE localhost:9200/shop/product/1
Затем вы получите ответ о том, было ли это успешным или нет. Вы также можете удалить весь индекс или типы с индексом, вы можете удалить его, оставив идентификатор документа так же -
curl -XDELETE localhost:9200/shop/product
Если вы хотите удалить индекс -
curl -XDELETE localhost:9200/shop
Если вы хотите удалить более одного индекса, который следует за определенным соглашением об именах (обратите внимание на *
, подстановочный знак), -
curl -XDELETE localhost:9200/.mar*
зрительно
Существуют различные инструменты, как указано выше, я не буду перечислять их здесь, но я свяжу вас с тем, который позволит вам сразу начать работу, находясь здесь. Этот инструмент называется KOPF, чтобы подключиться к вашему хосту, нажмите на логотип в верхнем левом углу и введите URL своего кластера.
После подключения вы сможете управлять всем кластером, удалять, оптимизировать и настраивать свой кластер.
Ответ 2
Если вам когда-нибудь понадобится удалить все индексы, это может пригодиться:
curl -X DELETE 'http://localhost:9200/_all'
Powershell:
Invoke-WebRequest -method DELETE http://localhost:9200/_all
Ответ 3
В документации (или The Definitive Guide) говорится, что вы также можете использовать следующий запрос для удаления всех индексов:
curl -XDELETE 'http://localhost:9200/*'
И там важное примечание:
Для некоторых возможность удаления всех ваших данных с помощью одной команды - очень пугающая перспектива. Если вы хотите исключить возможность случайного массового удаления, вы можете установить в true
в elasticsearch.yml
:
action.destructive_requires_name: true
Ответ 4
Вы должны отправить запрос DELETE
http://[your_host]:9200/[your_index_name_here]
Вы также можете удалить один документ:
http://[your_host]:9200/[your_index_name_here]/[your_type_here]/[your_doc_id]
Я предлагаю вам использовать эластихамер.
После удаления вы можете искать, если индекс все еще существует со следующим URL-адресом: http://[your_host]:9200/_stats/
Удачи!
Ответ 5
Удаление индекса приведет к удалению отображения и введите его. вы можете удалить все строки по следующему запросу
curl -XDELETE 'localhost:9200/twitter/tweet/_query?pretty' -d'
{
"query": {
"match_all":
}
}'
Однако для вышеуказанного запроса вам нужно установить плагин для удаления по запросу, так как из Elasticsearch 2.0.0-beta1 удаление по запросу было удалено из основного api
Install delete-by-query plugin
sudo bin/plugin install delete-by-query
Для большего
http://blog.appliedinformaticsinc.com/how-to-delete-elasticsearch-data-records-by-dsl-query/
Ответ 6
#list all index: curl -XGET http://localhost:9200/_cat/indices?v
![enter image description here]()
#delete index: curl -XDELETE 'localhost:9200/index_name'
#delete all indices: curl -XDELETE 'localhost:9200/_all'
#delete document : curl -XDELETE 'localhost:9200/index_name/type_name/document_id'
Установите кибану. У Kibana есть более интеллектуальный инструмент, который помогает легко создавать запрос.
![enter image description here]()
Ответ 7
Вы можете удалить индекс в python следующим образом
from elasticsearch import Elasticsearch
es = Elasticsearch([{'host':'localhost', 'port':'9200'}])
es.index(index='grades',doc_type='ist_samester',id=1,body={
"Name":"Programming Fundamentals",
"Grade":"A"
})
es.indices.delete(index='grades')
Ответ 8
Для массового удаления по запросу вы можете использовать специальный метод delete by query:
$ curl -XDELETE 'http://localhost:9200/twitter/tweet/_query' -d '{
"query" : {
"term" : { "user" : "kimchy" }
}
}
В истории, что API был удален, а затем снова введен повторно
Кто интересен, он имеет долгую историю.
- В первой версии этого ответа я ссылаюсь на документацию elasticsearch версии 1.6. В нем эта функциональность была отмечена как устаревшая, но работает хорошо.
- В версии elasticsearch 2.0 он был перемещен в отдельный плагин. И даже причины, почему это стало плагином объяснено.
- И он снова появился в основном API в версии 5.0 !
Ответ 9
Здесь есть много хороших ответов, но есть еще кое-что, что я хотел бы добавить:
- Если вы работаете в службе AWS ElasticSearch, вы не можете отбрасывать/удалять индексы. Вместо удаления индексов вы должны переиндексировать их.
Ответ 10
самый простой способ!
Endpoint :
http://localhost:9201/twitter/_delete_by_query
Payload :
{
"query": {
"match": {
"message": "some message"
}
}
}
где twitter
- индекс в упругом поиске
ref; https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-delete-by-query.html
Ответ 11
Я хотел удалить индекс logstash и много раз искал различные инструменты, такие как завиток. Но нашел решение в конце. Войдите в Кибану. Перейдите на вкладку "Инструменты разработчика" и введите DELETE/logstash-*
в поле запроса и нажмите зеленую кнопку со стрелкой. если вы получите "подтвержденный": true в ответ, что означает, что данные были очищены.
Ответ 12
Вы можете удалить либо весь индекс, либо тип документа, либо данные о перкулярном идентификаторе.
это три способа:
curl -XDELETE localhost: 9200/index_name
curl -XDELETE localhost: 9200/index_name/doc-type
curl -XDELETE localhost: 9200/index_name/doc-type/documentId
и если вы хотите удалить весь индекс, перейдите на подстановочный знак.
Ответ 13
Чтобы перечислить индексы
curl -L localhost:9200/_cat/indices
9200
порт по умолчанию [изменить порт при использовании другого порта]
Скорее всего, вы найдете все индексы, начинающиеся с формата logstash-yyyy-mm-dd
(logstash- *)
Вы можете увидеть все индексы и использовать
Чтобы удалить индексы и данные, выполните следующую команду.
curl -XDELETE localhost:9200/index_name
(который удалит данные и индексы).
Ответ 14
Вы также можете удалить индекс с помощью действия DELETE в "elasticsearch head" (плагин Chrome). Добавьте его в свой хром и подключите его к хосту. Там вы найдете все свои индексы, и если вы нажмете кнопку "Действия" под индексом, который хотите удалить, в раскрывающемся списке вы найдете опцию DELETE. нажмите на него и введите DELETE во всплывающем окне. Ваш индекс будет удален. Расширение "Elasticsearch head" - это простой способ просмотра и управления вашими индексами и данными.
Ответ 15
curl -X DELETE 'https://localhost:9200/_all'
Измените http
на https
, если вы используете SSL-сертификат в своем приложении
Ответ 16
Вы можете удалить индекс с помощью консоли Kibana:
![Console Icon]()
Чтобы получить весь индекс:
GET /_cat/indices?v
Чтобы удалить определенный индекс:
DELETE /INDEX_NAME_TO_DELETE
Ответ 17
Вы можете использовать chrome extensionasticsearch-head для удаления индекса
Ответ 18
Если мы не сможем подключиться к ES после обновления ES, есть ли другие варианты, чтобы очистить все индексы?