chcę usunąć wszystkie dokumenty indeksowane w ramach typu w Elasticsearch, używając API HTTP/odpoczynek, ale nie chcę, aby usunąć mapowanie dla tego typuUsuń dokumenty typu w Elasticsearch
Jak mogę zbudować zapytanie w adresie URL, aby to zrobić?
chcę usunąć wszystkie dokumenty indeksowane w ramach typu w Elasticsearch, używając API HTTP/odpoczynek, ale nie chcę, aby usunąć mapowanie dla tego typuUsuń dokumenty typu w Elasticsearch
Jak mogę zbudować zapytanie w adresie URL, aby to zrobić?
Przed polecenie wykonywania, index/mapowanie stan; (Zrzuty ekranu pochodzi elasticsearch wtyczki głowica interfejsu internetowej)
polecenia;
curl -XDELETE 'http://localhost:9200/publishercategoryeu/autocomplete/_query' -d '
{
"query": {
"bool": {
"must": [
{
"match_all": {}
}
]
}
}
}
'
Wynik;
Po polecenie wykonania, wskaźnik stanu/odwzorowywania;
Jak widzimy my usunięte wszystkie dokumenty indeksowane w ramach typu (mapowanie) bez usuwania indeksu lub typu (mapowanie).
Proste usunięcie przez zapytanie z zapytaniem match_all powinno wystarczyć. Można złapać więcej informacji tutaj:
Alternatywnie, można usunąć cały rodzaj i skorzystać z API szablonów. Po prostu upuść plik w folderze config/templates/zawierającym twój szablon i nigdy go nie stracisz. Mapowanie rzeczywiście zostanie utracone, gdy usuniesz mapowanie, ale szablon zostanie ponownie wykorzystany, gdy tylko coś zindeksujesz. Oto kilka informacji:
EDIT: nowa kasowania api: https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-delete.html
Wydaje się, że jest przestarzała – Tjorriemorrie
https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-delete.html –
z następującym poleceniem w wtyczce głowicy elasticsearch udało mi się usunąć wszystkie dokumenty typu logs
z indeksu logstash
bez kasowania odwzorowania:
{"query":{"match_all":{}}}
Do wolnego miejsca na dysku należy również zoptymalizować indeks (Akcje-> Optymalizacja dla indeksu logstash
w wtyczce głównej) po usunięciu dokumentów.
Jeśli chcesz to zrobić w golang, przy użyciu "olviere/elastic" bibliotekę, można użyć tego kodu, zakładając, że masz klienta yourClient
i yourIndex
i yourType
:
bq := elastic.NewBoolQuery()
bq.Must(elastic.NewMatchAllQuery())
_, err := elastic.NewDeleteByQueryService(yourClient).
Index(yourIndex).
Type(yourType).
Query(bq).
Do()
$ curl -XDELETE 'http://localhost:9200/twitter/tweet/_query?q=user:kimchy'
$ curl -XDELETE 'http://localhost:9200/twitter/tweet/_query' -d '{
"query" : {
"term" : { "user" : "kimchy" }
}
}
poprzednich odpowiedzi nie będzie działać z najnowszą wersją Elasticsearch
. "Usuń według zapytania" zostało wycofane z wersji Elasticsearch 2.0
. Elasticsearch
Dokumentacja mówi, że może spowodować OutOfMemoryError podczas współbieżnego indeksowania i może spowodować, że podstawowa i replika staną się niespójne. Jeśli chcesz śledzić historię problemu w Github.
Wykonuje teraz wiele kroków w celu usunięcia wszystkich dokumentów z type
.
Znajdź wszystkie identyfikatory dokumentów, które należy usunąć. Najbardziej skutecznym sposobem wykonania tej operacji jest użycie scroll/scan API, aby znaleźć wszystkie pasujące identyfikatory dla danego typu.
Wydaje zbiorczy wniosek o usunięcie dokumentów według identyfikatorów. Przykład podany poniżej.
curl -XPOST 'http://localhost:9200/_bulk' -d '
{ "delete": { "_index": "index", "_type": "type", "_id": "1"}
{ "delete": { "_index": "index", "_type": "type", "_id": "2"}'
Zauważ, że jeśli zapewniając wejście plik tekstowy do zwijania, ty musi użyć flagi --data-binary
zamiast zwykłego -d
.
to nie działa – localhost
"twitter" to nazwa indeksu, a "tweet" to nazwa odwzorowania w poleceniu. Czy zastąpiłeś je poprawnie swoją walizką? – csonuryilmaz
pewnie. Myślę, że to zależy od wersji elasticsearch. Mam również kilka zapytań z przewodnika elasticsearch i otrzymuję nieprzydatny wyjątek. – localhost