Wiem, że można usunąć wszystkie dokumenty określonego typu za pomocą funkcji deleteByQuery.
Przykład:
curl -XDELETE 'http://localhost:9200/twitter/tweet/_query' -d '{
"query" : {
"term" : { "user" : "kimchy" }
}
}'
Ale NIE mam terminu i po prostu chcę usunąć wszystkie dokumenty tego typu, bez względu na termin. Jaka jest najlepsza praktyka, aby to osiągnąć? Pusty termin nie działa.
elasticsearch
Michael Leiss
źródło
źródło
źródło
-H 'Content-Type: application/json'
Od ElasticSearch 5.x interfejs API delete_by_query jest dostępny domyślnie
POST: http://localhost:9200/index/type/_delete_by_query
źródło
Komentarz Torstena Engelbrechta w odpowiedzi Johna Petronesa rozszerzony:
(Nie chciałem edytować odpowiedzi Johna, ponieważ otrzymała głosy za i została ustawiona jako odpowiedź, a mogłem wprowadzić błąd)
źródło
Możesz usunąć dokumenty z typu za pomocą następującego zapytania:
Przetestowałem to zapytanie w Kibanie i Elastic 5.5.2
źródło
Rozpoczynanie od Elasticsearch 2.x usuwanie nie jest już dozwolone, ponieważ dokumenty pozostają w indeksie, powodując uszkodzenie indeksu.
źródło
news1, news2 and so on
i ustawianie aliasu dla bieżącego aktywnego indeksu donews
ścieżki. Oczywiście nazwa indeksu jest tylko przykładem. Tutaj znajdziesz kompletny przykład dla [alias indeksu] ( elast.co/guide/en/elasticsearch/reference/current/… ) oraz artykuł wyjaśniający studium przypadku.Powyższe odpowiedzi nie działają już z ES 6.2.2 z powodu Ścisłego sprawdzania typu zawartości dla żądań REST Elasticsearch .
curl
Poleceń, które skończyło się przy użyciu to:źródło
W konsoli Kibana :
źródło
Masz te alternatywy:
1) Usuń cały indeks:
przykład:
Więcej informacji można znaleźć tutaj - https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-delete-index.html
2) Usuń według zapytania do tych, które pasują:
* Tutaj mentorz to nazwa indeksu, a użytkownicy to typ
źródło
Począwszy od wersji ES 1.5.3, interfejs API usuwania przez zapytanie jest przestarzały i został całkowicie usunięty od wersji ES 2.0
Zamiast API, Delete By Query jest teraz wtyczką .
Aby skorzystać z wtyczki Delete By Query, musisz zainstalować wtyczkę na wszystkich węzłach klastra:
Korzystanie z wtyczki jest takie samo jak w starym API. Nie musisz niczego zmieniać w zapytaniach - ta wtyczka sprawi, że będą działać.
* Aby uzyskać pełne informacje dotyczące DLACZEGO usunięto API, możesz przeczytać więcej tutaj .
źródło
(Reputacja nie jest wystarczająco wysoka, aby móc komentować) Druga część odpowiedzi Johna Petrone działa - nie jest potrzebne żadne zapytanie. Spowoduje to usunięcie typu i wszystkich dokumentów zawartych w tym typie, ale można je po prostu ponownie utworzyć za każdym razem, gdy indeksujesz nowy dokument do tego typu.
Aby wyjaśnic:
$ curl -XDELETE 'http://localhost:9200/twitter/tweet'
Uwaga: to nie usunąć mapowanie! Ale jak wspomniano wcześniej, można go łatwo odwzorować, tworząc nowy dokument.
źródło
Używam Flexiblesearch 7.5 i kiedy używam
który wyrzuci poniżej błąd.
Muszę również dodać dodatkowy
-H 'Content-Type: application/json'
nagłówek w żądaniu, aby działało.źródło
Wystarczy dodać do tego kilka centów.
„Delete_by_query” wspomniano na górze jest nadal dostępny jako wtyczka w elasticsearch 2.x.
Chociaż w najnowszej nadchodzącej wersji 5.x zostanie on zastąpiony przez „usuń przez API zapytania”
źródło
Elasticsearch 2.3 opcja
w elasticsearch.yml wybierz się w podróż
źródło
Jeśli chcesz usunąć dokument według daty. Możesz użyć konsoli Kibana (wersja 6.1.2)
źródło