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?
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
À partir de Elasticsearch 2.1.x, optimize
est 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'
Dans la version actuelle d'elasticsearch (5.4),
Pour optimiser tous les index:
POST /_all/_forcemerge?only_expunge_deletes=true
Optimiser un seul index
POST /Twitter/_forcemerge?only_expunge_deletes=true
, où Twitter est l'index
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 .