web-dev-qa-db-fra.com

elasticsearch: comment libérer la taille du magasin après la suppression de documents

Sur mon serveur elasticsearch: .__ total de documents: 3 millions, taille totale: 3.6G Ensuite, je supprime environ 2,8 millions de documents: Total de documents: environ 0,13 million, taille totale: 3.6G

J'ai supprimé les documents, comment dois-je libérer la taille des documents?

38
Daniel

La suppression de documents indique uniquement que ceux-ci sont supprimés, afin qu'ils ne fassent pas l'objet d'une recherche. Pour récupérer de l'espace disque, vous devez optimiser l'index:

curl -XPOST 'http://localhost:9200/_optimize?only_expunge_deletes=true'

documentation: http://www.elasticsearch.org/guide/fr/elasticsearch/reference/current/indices-optimize.html

Mettre à jour

À partir de Elasticsearch 2.1.x, optimizeest déconseillé à en faveur deforcemerge. L'API est identique , seul le noeud final a changé.

curl -XPOST 'http://localhost:9200/_forcemerge?only_expunge_deletes=true'
69
knutwalker

Dans la version actuelle d'elasticsearch (5.4), 

  1. Pour optimiser tous les index:

    POST /_all/_forcemerge?only_expunge_deletes=true

  2. Optimiser un seul index

    POST /Twitter/_forcemerge?only_expunge_deletes=true, où Twitter est l'index

Référence: https://www.elastic.co/guide/fr/elasticsearch/reference/5.4/indices-forcemerge.html#indices-forcemerge

16
Sri Harsha Arangi

la réponse de Knutwalker est correcte. Toutefois, si vous utilisez AWS ElasticSearch et souhaitez libérer de l'espace de stockage, cela ne fonctionnera pas tout à fait.

Sur AWS, l'index à effacer doit être spécifié dans l'URL. Il peut inclure des caractères génériques, comme cela est courant avec la rotation d'index.

curl -XPOST 'https://something.es.amazonaws.com/index-*/_forcemerge?only_expunge_deletes=true'

AWS publie une liste des différences entre l'API ElasticSearch .

0
Steve E.