query index elasticsearch documents

index - Borrar documentos de tipo en Elasticsearch



insert document in index elasticsearch (7)

Antes de ejecutar el comando, indexar / mapear el estado; (capturas de pantalla tomadas de la interfaz web del plugin elasticsearch head )

Mando;

curl -XDELETE ''http://localhost:9200/publishercategoryeu/autocomplete/_query'' -d '' { "query": { "bool": { "must": [ { "match_all": {} } ] } } } ''

Resultado;

Después de ejecutar el comando, indexar / mapear el estado;

Como podemos ver, eliminamos todos los documentos indexados dentro de un tipo (mapeo) sin eliminar el índice o el tipo (mapeo).

Quiero eliminar todos los documentos indexados dentro de un tipo en Elasticsearch, usando la API HTTP / REST, pero no quiero eliminar la asignación para este tipo

¿Cómo puedo construir la consulta en la URL para hacer esto?


Con el siguiente comando en el plugin elasticsearch head pude eliminar todos los documentos de logs de tipo del índice logstash sin eliminar la asignación:

{"query":{"match_all":{}}}

Para liberar espacio en el disco, también debe optimizar el índice (Acciones-> Optimizar para indexar el logstash de logstash en el complemento principal) después de eliminar los documentos.


Las respuestas anteriores no funcionarán con la versión más reciente de Elasticsearch . "Eliminar por consulta" está en desuso de Elasticsearch 2.0 . Elasticsearch documentación de Elasticsearch dice que puede causar un OutOfMemoryError durante la indexación concurrente y puede hacer que el primario y la réplica se vuelvan inconsistentes. Si quieres seguir la historia del tema en Github .

Ahora toma varios pasos para eliminar todos los documentos de un type .

  1. Encuentre todos los identificadores del documento que necesita eliminar. La forma más eficiente de realizar esta operación es usar la API de desplazamiento / escaneo para encontrar todos los identificadores coincidentes para un tipo dado.

  2. Emita una solicitud masiva para eliminar los documentos por ID. Un ejemplo a continuación.

    curl -XPOST ''http://localhost:9200/_bulk'' -d '' { "delete": { "_index": "index", "_type": "type", "_id": "1"} { "delete": { "_index": "index", "_type": "type", "_id": "2"}''

Tenga en cuenta que si está proporcionando una entrada de archivo de texto a curl, debe usar el --data-binary lugar de plain -d .


Si desea hacer esto en golang, utilizando la olviere/elastic " olviere/elastic ", puede usar este código, suponiendo que tiene un cliente, su cliente, su yourIndex y su yourType :

bq := elastic.NewBoolQuery() bq.Must(elastic.NewMatchAllQuery()) _, err := elastic.NewDeleteByQueryService(yourClient). Index(yourIndex). Type(yourType). Query(bq). Do()


Una simple eliminación por consulta con una consulta match_all debería hacer el truco. Puede obtener más información aquí:

eliminar por consulta api

Alternativamente, puede eliminar todo el tipo y hacer uso de la plantilla api. Simplemente suelte un archivo en la carpeta config / templates / que contiene su plantilla, y nunca lo perderá. De hecho, la asignación se perderá cuando la elimine, pero la plantilla se reutilizará tan pronto como vuelva a indexar algo. Aquí hay más información:

plantilla api

EDITAR: nuevo eliminar api: https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-delete.html


utilizar:

curl -XDELETE ''http://{server}/{index_name}/{type_name}/''

(como en la documentation )


$ curl -XDELETE ''http://localhost:9200/twitter/tweet/_query?q=user:kimchy'' $ curl -XDELETE ''http://localhost:9200/twitter/tweet/_query'' -d ''{ "query" : { "term" : { "user" : "kimchy" } } }