Bagaimana cara menghapus semua data dari solr
dengan perintah? Kami menggunakan solr
dengan lily
dan hbase
.
Bagaimana cara menghapus data dari hbase dan solr?
http://lucene.apache.org/solr/4_10_0/tutorial.html#Deleting+Data
Bagaimana cara menghapus semua data dari solr
dengan perintah? Kami menggunakan solr
dengan lily
dan hbase
.
Bagaimana cara menghapus data dari hbase dan solr?
http://lucene.apache.org/solr/4_10_0/tutorial.html#Deleting+Data
Jawaban:
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=true
untuk melakukan perubahan
Tidak banyak tahu tentang menghapus data hbase.
&commit=true
kueri sehingga menjadi http://host:port/solr/core/update?stream.body=<delete><query>*:*</query></delete>&commit=true
Tanpa itu Saya bertanya-tanya mengapa semua dokumen tidak dihapus.
Saya telah menggunakan permintaan ini untuk menghapus semua catatan saya tetapi terkadang perlu untuk melakukan ini.
Untuk itu, tambahkan &commit=true
ke permintaan Anda:
http://host:port/solr/core/update?stream.body=<delete><query>*:*</query></delete>&commit=true
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
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);
}
}
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'
<core>
didefinisikan di url. Saya mengedit jawabannya.
Dari penggunaan baris perintah:
bin/post -c core_name -type text/xml -out yes -d $'<delete><query>*:*</query></delete>'
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)
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
Saya mencoba langkah-langkah di bawah ini. Ini bekerja dengan baik.
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.
host
(localhost) dan port
(8080) pada link di atas. harap ubah host dan port jika berbeda pada akhirnya.collection
/ collection1
. Saya digunakan collection1
di tautan di atas. tolong ubah juga jika nama inti Anda berbeda.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.
Saat mengosongkan indeks Solr, Anda juga harus melakukan komit dan mengoptimalkan setelah menjalankan kueri hapus semua. Langkah lengkap diperlukan (hanya curl yang Anda butuhkan): http://www.alphadevx.com/a/365-Clearing-a-Solr-search-index
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>');
})();
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.
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.
/update?commit=true
. Badan permintaan JSON sendiri berfungsi dengan baik :)