Bagaimana menghapus semua data dari solr dan hbase

Jawaban:

190

Jika Anda ingin membersihkan indeks Solr -

Anda dapat mengaktifkan url http -

http://host:port/solr/[core name]/update?stream.body=<delete><query>*:*</query></delete>&commit=true

(ganti [core name]dengan nama inti yang ingin Anda hapus). Atau gunakan ini jika memposting data xml data:

<delete><query>*:*</query></delete>

Pastikan Anda menggunakan commit=trueuntuk melakukan perubahan

Tidak banyak tahu tentang menghapus data hbase.

Jayendra
sumber
7
core diperlukan jika Anda menggunakan pengaturan multicore.
Jayendra
1
Jawaban ini membahas cara menghapus semua tabel di hbase: stackoverflow.com/questions/3990952/… . Jika Anda hanya ingin menghapus data di tabel, Anda dapat memotongnya daripada menjatuhkannya.
codingFoo
apakah itu hanya menghapus indeks? atau apakah itu akan menghapus data sebenarnya juga?
vishnu viswanath
6
Anda mungkin ingin menambahkan &commit=truekueri sehingga menjadi http://host:port/solr/core/update?stream.body=<delete><query>*:*</query></delete>&commit=trueTanpa itu Saya bertanya-tanya mengapa semua dokumen tidak dihapus.
chris544
2
Itu tidak berhasil. Saya mendapatkan: HTTP ERROR 404 Masalah mengakses / solr / update. Alasan: Tidak Ditemukan dari solr ...
Stepan Yakovenko
91

Saya telah menggunakan permintaan ini untuk menghapus semua catatan saya tetapi terkadang perlu untuk melakukan ini.

Untuk itu, tambahkan &commit=trueke permintaan Anda:

http://host:port/solr/core/update?stream.body=<delete><query>*:*</query></delete>&commit=true
Waktu tayang3
sumber
11

Anda dapat menggunakan perintah berikut untuk menghapus. Gunakan kueri "cocokkan semua dokumen" dalam perintah hapus menurut kueri:

'<delete><query>*:*</query></delete>

Anda juga harus berkomitmen setelah menjalankan delete jadi, untuk mengosongkan indeks, jalankan dua perintah berikut:

curl http://localhost:8983/solr/update --data '<delete><query>*:*</query></delete>' -H 'Content-type:text/xml; charset=utf-8'
curl http://localhost:8983/solr/update --data '<commit/>' -H 'Content-type:text/xml; charset=utf-8'

Strategi lain adalah menambahkan dua bookmark di browser Anda:

http://localhost:8983/solr/update?stream.body=<delete><query>*:*</query></delete>
http://localhost:8983/solr/update?stream.body=<commit/>


Dokumen sumber dari SOLR:
https://wiki.apache.org/solr/FAQ#How_can_I_delete_all_documents_from_my_index.3F

Navjot Bhardwaj
sumber
10

Posting data json (misalnya dengan curl)

curl -X POST -H 'Content-Type: application/json' \
    'http://<host>:<port>/solr/<core>/update?commit=true' \
    -d '{ "delete": {"query":"*:*"} }'
Frank R.
sumber
8

Jika Anda ingin menghapus semua data di Solr melalui SolrJ lakukan sesuatu seperti ini.

public static void deleteAllSolrData() {
    HttpSolrServer solr = new HttpSolrServer("http://localhost:8080/solr/core/");
    try {
      solr.deleteByQuery("*:*");
    } catch (SolrServerException e) {
      throw new RuntimeException("Failed to delete data in Solr. "
          + e.getMessage(), e);
    } catch (IOException e) {
      throw new RuntimeException("Failed to delete data in Solr. "
          + e.getMessage(), e);
    }
}

Jika Anda ingin menghapus semua data di HBase lakukan sesuatu seperti ini.

public static void deleteHBaseTable(String tableName, Configuration conf) {
    HBaseAdmin admin = null;    
    try {
        admin = new HBaseAdmin(conf);
        admin.disableTable(tableName);
        admin.deleteTable(tableName);
    } catch (MasterNotRunningException e) {
        throw new RuntimeException("Unable to delete the table " + tableName
        + ". The actual exception is: " + e.getMessage(), e);
    } catch (ZooKeeperConnectionException e) {
        throw new RuntimeException("Unable to delete the table " + tableName
        + ". The actual exception is: " + e.getMessage(), e);
    } catch (IOException e) {
        throw new RuntimeException("Unable to delete the table " + tableName
        + ". The actual exception is: " + e.getMessage(), e);
    } finally {
        close(admin);
    }
 }
RATabora
sumber
4

Gunakan kueri "cocokkan semua dokumen" dalam perintah hapus menurut kueri :

Anda juga harus berkomitmen setelah menjalankan delete jadi, untuk mengosongkan indeks, jalankan dua perintah berikut:

curl http://localhost:8983/solr/update --data '<delete><query>*:*</query></delete>' -H 'Content-type:text/xml; charset=utf-8'

curl http://localhost:8983/solr/update --data '<commit/>' -H 'Content-type:text/xml; charset=utf-8'
Nanhe Kumar
sumber
Bekerja dengan baik dengan <core>didefinisikan di url. Saya mengedit jawabannya.
Achala Dissanayake
4

Dari penggunaan baris perintah:

 bin/post -c core_name -type text/xml -out yes -d $'<delete><query>*:*</query></delete>'
Murtaza Manasawala
sumber
3

Saya datang ke sini untuk menghapus semua dokumen dari solr instance melalui .NET framework menggunakan SolrNet. Inilah cara saya bisa melakukannya:

Startup.Init<MyEntity>("http://localhost:8081/solr");
ISolrOperations<MyEntity> solr =
    ServiceLocator.Current.GetInstance<ISolrOperations<MyEntity>>();
SolrQuery sq = new SolrQuery("*:*");
solr.Delete(sq);
solr.Commit();

Ini telah menghapus semua dokumen. (Saya tidak yakin apakah ini dapat dipulihkan, saya sedang mempelajari dan menguji fase Solr, jadi mohon pertimbangkan untuk membuat cadangan sebelum menggunakan kode ini)

Habib
sumber
Ini sangat berguna. Terima kasih !
Karan
3

aktifkan ini di browser

http://localhost:8983/solr/update?stream.body=<delete><query>*:*</query></delete>&commit=true perintah ini akan menghapus semua dokumen dalam index di solr

bittu
sumber
Jika Anda dapat mengedit jawaban Anda dan menjelaskan fungsi kode yang Anda tunjukkan, dan mengapa / bagaimana kode tersebut menjawab pertanyaan, hal itu dapat sangat membantu.
Lea Cohen
apakah jawaban di atas oke sekarang ..?
bittu
Ini tentu lebih dipahami :).
Lea Cohen
2

Saya telah menggunakan kueri ini untuk menghapus semua catatan saya.

http://host/solr/core-name/update?stream.body=%3Cdelete%3E%3Cquery%3E*:*%3C/query%3E%3C/delete%3E&commit=true
Suf_Malek
sumber
2

Saya mencoba langkah-langkah di bawah ini. Ini bekerja dengan baik.

  • Pastikan server SOLR itu berjalan
  • Cukup klik tautan Hapus semua data SOLR yang akan menekan dan menghapus semua data yang diindeks SOLR Anda, maka Anda akan mendapatkan detail berikut di layar sebagai output.

    <response>
      <lst name="responseHeader">
        <int name="status">0</int>
        <int name="QTime">494</int>
      </lst>
    </response>
  • jika Anda tidak mendapatkan output di atas maka pastikan yang berikut ini.

    • Saya menggunakan default host(localhost) dan port(8080) pada link di atas. harap ubah host dan port jika berbeda pada akhirnya.
    • Nama inti default harus collection/ collection1. Saya digunakan collection1di tautan di atas. tolong ubah juga jika nama inti Anda berbeda.
Ganesa Vijayakumar
sumber
1

Jika Anda perlu membersihkan semua data, mungkin lebih cepat untuk membuat ulang koleksi, misalnya

solrctl --zk localhost:2181/solr collection --delete <collectionName>
solrctl --zk localhost:2181/solr collection --create <collectionName> -s 1
Tagar
sumber
1

Contoh curl di atas semuanya gagal untuk saya ketika saya menjalankannya dari terminal cygwin. Ada kesalahan seperti ini ketika saya menjalankan contoh skrip.

curl http://192.168.2.20:7773/solr/CORE1/update --data '<delete><query>*:*</query></delete>' -H 'Content-type:text/xml; charset=utf-8'
<?xml version="1.0" encoding="UTF-8"?>
<response>
<lst name="responseHeader"><int name="status">0</int><int name="QTime">1</int></lst>
</response>
<!-- 
     It looks like it deleted stuff, but it did not go away
     maybe because the committing call failed like so 
-->
curl http://192.168.1.2:7773/solr/CORE1/update --data-binary '' -H 'Content-type:text/xml; charset=utf-8'
<?xml version="1.0" encoding="UTF-8"?>
<response>
<lst name="responseHeader"><int name="status">400</int><int name="QTime">2</int></lst><lst name="error"><str name="msg">Unexpected EOF in prolog
 at [row,col {unknown-source}]: [1,0]</str><int name="code">400</int></lst>
</response>

Saya perlu menggunakan delete dalam satu lingkaran pada nama inti untuk menghapus semuanya dalam sebuah proyek.

Kueri di bawah ini berfungsi untuk saya dalam skrip terminal Cygwin.

curl http://192.168.1.2:7773/hpi/CORE1/update?stream.body=<delete><query>*:*</query></delete>&commit=true
<?xml version="1.0" encoding="UTF-8"?>
<response>
<lst name="responseHeader"><int name="status">0</int><int name="QTime">1</int></lst>
</response>

Baris yang satu ini membuat data hilang dan perubahan tetap ada.

ndasusers
sumber
1

Solr Saya tidak yakin tetapi Anda dapat menghapus semua data dari hbase menggunakan perintah truncate seperti di bawah ini:

truncate 'table_name'

Ini akan menghapus semua baris-kunci dari tabel hbase.

Kapil
sumber
0

Saya membuat bookmark JavaScript yang menambahkan tautan hapus di Solr Admin UI

javascript: (function() {
    var str, $a, new_href, href, upd_str = 'update?stream.body=<delete><query>*:*</query></delete>&commit=true';
    $a = $('#result a#url');
    href = $a.attr('href');
    str = href.match('.+solr\/.+\/(.*)')[1];
    new_href = href.replace(str, upd_str);
    $('#result').prepend('<a id="url_upd" class="address-bar" href="' + new_href + '"><strong>DELETE ALL</strong>   ' + new_href + '</a>');
})();

masukkan deskripsi gambar di sini

MyroslavN
sumber
0

Jika Anda menggunakan Cloudera 5.x, Di sini, di dokumentasi ini disebutkan bahwa Lily juga mempertahankan pembaruan dan penghapusan waktu nyata.

Mengonfigurasi Layanan Pengindeks Lily HBase NRT untuk Digunakan dengan Cloudera Search

Karena HBase menerapkan penyisipan, pembaruan, dan penghapusan ke sel tabel HBase, pengindeks membuat Solr konsisten dengan isi tabel HBase, menggunakan replikasi HBase standar.

Tidak yakin apakah truncate 'hTable'juga didukung dalam hal yang sama.

Jika tidak, Anda membuat Pemicu atau Layanan untuk membersihkan data Anda dari Solr dan HBase pada Acara tertentu atau apa pun.

Murtaza Kanchwala
sumber
0

Untuk menghapus semua dokumen dari koleksi Solr, Anda dapat menggunakan permintaan ini:

curl -X POST -H 'Content-Type: application/json' --data-binary '{"delete":{"query":"*:*" }}' http://localhost:8983/solr/my_collection/update

Ini menggunakan tubuh JSON.

youhans
sumber
Seperti yang ditunjukkan oleh orang lain, mungkin lebih baik digunakan /update?commit=true. Badan permintaan JSON sendiri berfungsi dengan baik :)
Frederick Zhang