elasticsearch - aws - Eliminar todos los documentos del índice/tipo sin eliminar el tipo
elasticsearch tutorial (14)
Sé que uno puede eliminar todos los documentos de un cierto tipo a través de deleteByQuery.
Ejemplo:
curl -XDELETE ''http://localhost:9200/twitter/tweet/_query'' -d ''{
"query" : {
"term" : { "user" : "kimchy" }
}
}''
Pero no tengo ningún término y simplemente quiero eliminar todos los documentos de ese tipo, sin importar el término. ¿Cuál es la mejor práctica para lograr esto? El término vacío no funciona.
El complemento Delete-By-Query se ha eliminado a favor de una nueva implementación de Delete By Query API en core. Leer aquí
curl -XPOST ''localhost:9200/twitter/tweet/_delete_by_query?conflicts=proceed&pretty'' -d''
{
"query": {
"match_all": {}
}
}''
Nota para ES2 +
Comenzando con ES 1.5.3, la API de eliminación por consulta está en desuso, y se elimina por completo desde ES 2.0
En lugar de la API, Delete By Query ahora es un complemento .
Para utilizar el complemento Eliminar por consulta, debe instalar el complemento en todos los nodos del clúster:
sudo bin/plugin install delete-by-query
Todos los nodos deben reiniciarse después de la instalación.
El uso del complemento es el mismo que el API anterior. No necesita cambiar nada en sus consultas; este complemento solo hará que funcionen.
* Para obtener información completa acerca de POR QUÉ se eliminó la API, puede leer más here .
(La reputación no es lo suficientemente alta como para comentar) La segunda parte de la respuesta de John Petrone funciona: no se necesita consulta. Suprimirá el tipo y todos los documentos contenidos en ese tipo, pero eso solo se puede volver a crear cada vez que indexe un nuevo documento a ese tipo.
Solo para aclarar: $ curl -XDELETE ''http://localhost:9200/twitter/tweet''
Nota: ¡esto borra la asignación! Pero como se mencionó anteriormente, se puede reasignar fácilmente creando un documento nuevo.
A partir de Elasticsearch 2.x delete ya no está permitido, ya que los documentos permanecen en el índice y causan daños en el índice.
Creo que si combina la eliminación por consulta con una coincidencia, todo debería hacer lo que está buscando, algo como esto (usando su ejemplo):
curl -XDELETE ''http://localhost:9200/twitter/tweet/_query'' -d ''{
"query" : {
"match_all" : {}
}
}''
O simplemente puede eliminar el tipo:
curl -XDELETE http://localhost:9200/twitter/tweet
De ElasticSearch 5.x, la API delete_by_query está allí por defecto
POST: http://localhost:9200/index/type/_delete_by_query
{
"query": {
"match_all": {}
}
}
El comentario de Torsten Engelbrecht en la respuesta de John Petrones se expandió:
curl -XDELETE ''http://localhost:9200/twitter/tweet/_query'' -d
''{
"query":
{
"match_all": {}
}
}''
(No quise editar la respuesta de John, ya que obtuvo votaciones ascendentes y se establece como respuesta, y podría haber introducido un error)
Elasticsearch 2.3 la opción
action.destructive_requires_name: true
en elasticsearch.yml hacer el viaje
curl -XDELETE http://localhost:9200/twitter/tweet
En la consola Kibana :
POST calls-xin-test-2/_delete_by_query
{
"query": {
"match_all": {}
}
}
Las respuestas anteriores ya no funcionan con ES 6.2.2 debido a la comprobación estricta del tipo de contenido para las solicitudes de REST de Elasticsearch . El comando curl
que terminé usando es este:
curl -H''Content-Type: application/json'' -XPOST ''localhost:9200/yourindex/_doc/_delete_by_query?conflicts=proceed'' -d'' { "query": { "match_all": {} }}''
Puede eliminar documentos del tipo con la siguiente consulta:
POST /index/type/_delete_by_query
{
"query" : {
"match_all" : {}
}
}
Probé esta consulta en Kibana y Elastic 5.5.2
Si desea eliminar el documento según una fecha. Puede usar la consola kibana (v.6.1.2)
POST index_name/_delete_by_query
{
"query" : {
"range" : {
"sendDate" : {
"lte" : "2018-03-06"
}
}
}
}
Solo para agregar un par de centavos a esto.
El "delete_by_query" mencionado en la parte superior todavía está disponible como un complemento en elasticsearch 2.x.
Aunque en la última versión próxima 5.x, será reemplazado por "delete by query api"
Tienes estas alternativas:
1) Eliminar un índice completo:
curl -XDELETE ''http://localhost:9200/indexName''
ejemplo:
curl -XDELETE ''http://localhost:9200/mentorz''
Para obtener más detalles, puede encontrarlo aquí: https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-delete-index.html
2) Eliminar por consulta a los que coinciden:
curl -XDELETE ''http://localhost:9200/mentorz/users/_query'' -d
''{
"query":
{
"match_all": {}
}
}''
* Aquí mentorz es un nombre de índice y los usuarios son un tipo