2016-02-18 1 views
1

Я хотел бы удалить весь мой документ _type = лак-запрос на мой поиск elastics. Я установил удаление плагином запроса (https://www.elastic.co/guide/en/elasticsearch/plugins/2.0/plugins-delete-by-query.html)Как действительно удалить документ определенного типа в elasticsearch

Я УДАЛИТЬ http://localhost:9200/logstash */_ запроса

{ 
    "query": { 
    "bool": { 
     "must": [   
     { "match": {"_type":"varnish-request"}}, 
     { "match": {"_index":"logstash-2016.02.05"}}  
     ] 
    } 
    } 
} 

И это нормально

{"took":2265842,"timed_out":false,"_indices":{"_all":{"found":3062614,"deleted":3062614,"missing":0,"failed":0},"logstash-2016.02.05": 
{"found":3062614,"deleted":3062614,"missing":0,"failed":0}},"failures":[]} 

локон http://localhost:9200/_cat/indices | сортировать Перед чистый

  • желтый открыт logstash-2016.02.05 5 1 4618245 0 4.1gb 4.1gb

После чистого

  • желтый открыт logstash-2016.02.05 5 1 1555631 3062605 4.1gb 4.1gb

Все дело в том, чтобы «осветить» мой ES-сервер, удалив бесполезные данные. Но здесь я вижу, что размер индекса все тот же.

Я уже проверить Delete documents of type in Elasticsearch, но не повезло

я пытаюсь с elasticsearch: how to free store size after deleting documents

POST http://localhost:9200/logstash-2016.02.05/_forcemerge

{"_shards":{"total":10,"successful":5,"failed":0}} 

Но до сих пор

  • желтый открыт logstash-2016.02.05 5 1 1555631 3062605 4.1gb 4.1gb

ответ

1

Первый шаг правильный. Теперь вам просто нужно позвонить _optimize (или _forcemerge, если вы используете ES 2.1+), включив only_expunge_deletes. Это позволит удалить сегменты с удаленными документами и освободить место.

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

или

curl -XPOST 'http://localhost:9200/_forcemerge?only_expunge_deletes=true' 
+0

Большое спасибо @Val, это работает '' 'желтый открытым logstash-2016.02.05 5 1 1555631 0 1.3GB 1.3gb''' – glmrenard

+0

Awesome, рад, что это помогло! – Val

Смежные вопросы