Saya tahu seseorang dapat menghapus semua dokumen dari jenis tertentu melalui deleteByQuery.
Contoh:
curl -XDELETE 'http://localhost:9200/twitter/tweet/_query' -d '{
"query" : {
"term" : { "user" : "kimchy" }
}
}'
Tapi saya tidak punya istilah dan hanya ingin menghapus semua dokumen dari jenis itu, apa pun istilahnya. Apa praktik terbaik untuk mencapai ini? Istilah kosong tidak berfungsi.
elasticsearch
Michael Leiss
sumber
sumber
sumber
-H 'Content-Type: application/json'
Dari ElasticSearch 5.x, API delete_by_query ada secara default
POST: http://localhost:9200/index/type/_delete_by_query
sumber
Komentar Torsten Engelbrecht dalam jawaban John Petrones diperluas:
(Saya tidak ingin mengedit balasan John, karena mendapat upvotes dan ditetapkan sebagai jawaban, dan saya mungkin telah membuat kesalahan)
sumber
Anda dapat menghapus dokumen dari jenis dengan kueri berikut:
Saya menguji permintaan ini di Kibana dan Elastic 5.5.2
sumber
Mulai dari penghapusan Elasticsearch 2.x tidak lagi diizinkan, karena dokumen tetap berada di indeks yang menyebabkan korupsi indeks.
sumber
news1, news2 and so on
dan mengatur alias untuk indeks aktif saat ini kenews
jalur. Tentu saja nama indeksnya hanya sebagai contoh. Di sini Anda dapat menemukan contoh lengkap untuk [alias indeks] ( elastic.co/guide/en/elasticsearch/reference/current/… ) dan artikel yang menjelaskan studi kasus.Jawaban di atas tidak lagi berfungsi dengan ES 6.2.2 karena Memeriksa Jenis-Jenis yang Ketat untuk Permintaan REST Elasticsearch . The
curl
perintah yang saya akhirnya menggunakan adalah ini:sumber
Di Konsol Kibana :
sumber
Anda memiliki alternatif ini:
1) Hapus seluruh indeks:
contoh:
Untuk detail lebih lanjut Anda dapat menemukan di sini - https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-delete-index.html
2) Hapus dengan Permintaan kepada mereka yang cocok:
* Di sini mentorz adalah nama indeks dan pengguna adalah tipe
sumber
Dimulai dengan ES 1.5.3 API penghapusan-oleh-permintaan sudah tidak digunakan lagi, dan sepenuhnya dihapus sejak ES 2.0
Alih-alih API, Delete By Query sekarang menjadi plugin .
Untuk menggunakan plugin Delete By Query Anda harus menginstal plugin di semua node cluster:
Penggunaan plugin sama dengan API lama. Anda tidak perlu mengubah apa pun dalam kueri Anda - plugin ini hanya akan membuatnya berfungsi.
* Untuk informasi lengkap mengenai MENGAPA API dihapus, Anda dapat membaca lebih lanjut di sini .
sumber
(Reputasi tidak cukup tinggi untuk dikomentari) Bagian kedua dari jawaban John Petrone berfungsi - tidak perlu kueri. Ini akan menghapus jenis dan semua dokumen yang terkandung dalam jenis itu, tetapi itu bisa saja dibuat ulang setiap kali Anda mengindeks dokumen baru ke jenis itu.
Hanya untuk mengklarifikasi:
$ curl -XDELETE 'http://localhost:9200/twitter/tweet'
Catatan: ini tidak menghapus pemetaan! Tetapi seperti yang disebutkan sebelumnya, dapat dengan mudah dipetakan kembali dengan membuat dokumen baru.
sumber
Saya menggunakan elasticsearch 7.5 dan ketika saya menggunakan
yang akan melempar kesalahan di bawah ini.
Saya juga perlu menambahkan
-H 'Content-Type: application/json'
header tambahan dalam permintaan untuk membuatnya berfungsi.sumber
Hanya untuk menambahkan beberapa sen ke ini.
The "delete_by_query" disebutkan di atas masih tersedia sebagai plugin di 2.x. elasticsearch
Meskipun dalam versi 5.x terbaru yang akan datang itu akan diganti oleh "delete by query api"
sumber
Elasticsearch 2.3 opsi
di elasticsearch.yml melakukan perjalanan
sumber
Jika Anda ingin menghapus dokumen berdasarkan tanggal. Anda dapat menggunakan konsol kibana (v.6.1.2)
sumber