2015-12-09 30 views

Odpowiedz

5

Możesz to zrobić za pomocą wtyczki delete by query.

Zakładając, że masz jakieś timestamp lub creation date pól w indeksie, zapytanie będzie wyglądał jak ten

DELETE /your_index/your_type/_query 
{ 
    "query": { 
    "range": { 
     "timestamp": { 
     "lte": "now-10y" 
     } 
    } 
    } 
} 

spowoduje to usunięcie zapisów starszych niż 10 lat.

Mam nadzieję, że to pomoże

+0

Czy jest jakiś sposób, aby to zrobić w formie skryptu, więc nie musimy ręcznie uruchamiać zapytania? – sri

+0

Czy to zapytanie kasowania całkowicie kasuje rekordy z indeksu i pozwala na wstawienie nowych rekordów – sri

+0

Możesz ustawić w górę 'zadanie cron' do zrobienia tego codziennie, rekordy ** nie ** są wymazywane po wykonaniu delete, są ** oznaczone ** jako usunięte i podczas scalania segmentów są faktycznie usuwane, możesz zobaczyć wzrost rozmiaru indeksu po Usunięcie lub aktualizacja, możesz użyć opcji [wymuszaj scalanie] (https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-forcemerge.html), aby zoptymalizować indeks. – ChintanShah25

4

dane Split do codziennych indeksów i używać jako aliasu starej nazwy indeksu. następnie usuń każdy indeks codziennie. podobnie jak logstash:

Indeksy dzienne: logstash-20151011, logstash-20151012, logstash-20151013.

Pełna alias: logstash

Następnie codziennie usuń ostatni indeks.

+1

Korzystanie z wielu indeksów jest drogą do zrobienia. Aby usunąć starsze indeksy, możesz użyć kustosza: https://www.elastic.co/guide/en/elasticsearch/client/curator/current/index.html – slim