Tüm verileri solr
komutla nasıl silerim ? Biz kullandığınız solr
ile lily
ve hbase
.
Verileri hem hbase hem de solr'den nasıl silebilirim?
http://lucene.apache.org/solr/4_10_0/tutorial.html#Deleting+Data
Tüm verileri solr
komutla nasıl silerim ? Biz kullandığınız solr
ile lily
ve hbase
.
Verileri hem hbase hem de solr'den nasıl silebilirim?
http://lucene.apache.org/solr/4_10_0/tutorial.html#Deleting+Data
Yanıtlar:
Solr indeksini temizlemek istiyorsanız -
http url'yi ateşleyebilirsiniz -
http://host:port/solr/[core name]/update?stream.body=<delete><query>*:*</query></delete>&commit=true
( [core name]
silmek istediğiniz çekirdeğin adıyla değiştirin ). Veya veri xml verilerini gönderiyorsanız bunu kullanın:
<delete><query>*:*</query></delete>
commit=true
Değişiklikleri uygulamak için kullandığınızdan emin olun
Yine de hbase verilerini temizleme konusunda pek fikrim yok.
&commit=true
Sorguya ekleme yapmak isteyebilirsiniz, böylece Sorgu http://host:port/solr/core/update?stream.body=<delete><query>*:*</query></delete>&commit=true
Olmadan tüm belgelerin neden kaldırılmadığını merak ediyordum.
Silmek için aşağıdaki komutları kullanabilirsiniz. Sorguya göre silme komutunda "tüm dokümanları eşleştir" sorgusunu kullanın:
'<delete><query>*:*</query></delete>
Ayrıca silme işlemini çalıştırdıktan sonra da işlemelisiniz, bu nedenle dizini boşaltmak için aşağıdaki iki komutu çalıştırın:
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'
Başka bir strateji, tarayıcınıza iki yer imi eklemektir:
http://localhost:8983/solr/update?stream.body=<delete><query>*:*</query></delete>
http://localhost:8983/solr/update?stream.body=<commit/>
SOLR'den kaynak dokümanlar:
https://wiki.apache.org/solr/FAQ#How_can_I_delete_all_documents_from_my_index.3F
Solr'deki tüm verileri SolrJ aracılığıyla silmek istiyorsanız, buna benzer bir şey yapın.
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);
}
}
HBase'deki tüm verileri silmek istiyorsanız, buna benzer bir şey yapın.
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);
}
}
Sorguya göre silme komutunda "tüm dokümanları eşleştir" sorgusunu kullanın :
Ayrıca silme işlemini çalıştırdıktan sonra da işlemelisiniz, bu nedenle dizini boşaltmak için aşağıdaki iki komutu çalıştırın:
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>
tanımlananla iyi çalıştı . Cevabı düzenledim.
Komut satırından şunları kullanın:
bin/post -c core_name -type text/xml -out yes -d $'<delete><query>*:*</query></delete>'
Buraya SolrNet kullanarak .Net çerçevesinden tüm belgeleri solr örneğinden silmek için geldim. İşte bunu nasıl yapabildim:
Startup.Init<MyEntity>("http://localhost:8081/solr");
ISolrOperations<MyEntity> solr =
ServiceLocator.Current.GetInstance<ISolrOperations<MyEntity>>();
SolrQuery sq = new SolrQuery("*:*");
solr.Delete(sq);
solr.Commit();
Bu, tüm belgeleri temizledi. (Bunun kurtarılıp kurtarılamayacağından emin değilim, Solr'ı öğrenme ve test aşamasındayım, bu nedenle lütfen bu kodu kullanmadan önce yedeklemeyi düşünün)
bunu tarayıcıda ateşle
http://localhost:8983/solr/update?stream.body=<delete><query>*:*</query></delete>&commit=true
bu komut, solr'deki dizindeki tüm belgeleri silecek
Aşağıdaki adımları denedim. İyi çalışıyor.
SOLR indeksli tüm verilerinizi silecek ve silecek olan Tüm SOLR verilerini sil bağlantısına tıklamanız yeterlidir, ardından ekranda aşağıdaki ayrıntıları çıktı olarak alırsınız.
<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">494</int>
</lst>
</response>
Yukarıdaki çıktıyı alamıyorsanız, lütfen aşağıdakilerden emin olun.
host
(localhost) ve port
(8080) kullandım. Sizin tarafınızdan farklıysa lütfen ana bilgisayarı ve bağlantı noktasını değiştirin.collection
/ olmalıdır collection1
. Kullandığım collection1
yukarıdaki bağlantıda. çekirdek adınız farklıysa lütfen değiştirin.Her şeyden önce curl örnekleri, onları bir cygwin terminalinden çalıştırdığımda benim için başarısız oldu. Komut dosyası örneğini çalıştırdığımda buna benzer hatalar vardı.
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>
Silme işlemini bir projede hepsini silmek için çekirdek adlarda bir döngüde kullanmam gerekiyordu.
Aşağıdaki bu sorgu Cygwin terminal komut dosyasında benim için çalıştı.
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>
Bu tek satır verilerin kaybolmasına neden oldu ve değişiklik devam etti.
Bir Solr indeksini temizlerken, tümünü sil sorgusunu çalıştırdıktan sonra bir commit yapmalı ve optimize etmelisiniz. Tam adımlar gerekli (tüm ihtiyacınız olan curl): http://www.alphadevx.com/a/365-Clearing-a-Solr-search-index
Solr Yönetici Arayüzüne silme bağlantısını ekleyen bir JavaScript yer işareti yaptım
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>');
})();
Cloudera 5.x kullanıyorsanız, Bu dokümantasyonda Lily'nin Gerçek zamanlı güncellemeleri ve silmeleri de sürdürdüğünden bahsedilmektedir.
Lily HBase NRT Dizin Oluşturucu Hizmetini Cloudera Aramasıyla Kullanım için Yapılandırma
HBase, HBase tablo hücrelerine eklemeler, güncellemeler ve silmeler uygularken, indeksleyici, standart HBase replikasyonunu kullanarak Solr'ı HBase tablo içeriği ile tutarlı tutar.
truncate 'hTable'
Aynı şekilde desteklenip desteklenmediğinden emin değilim .
Aksi takdirde, verilerinizi hem Solr hem de HBase'den belirli bir Olay veya herhangi bir şeyden temizlemek için bir Tetikleyici veya Hizmet oluşturursunuz.
Bir Solr koleksiyonunun tüm belgelerini silmek için bu isteği kullanabilirsiniz:
curl -X POST -H 'Content-Type: application/json' --data-binary '{"delete":{"query":"*:*" }}' http://localhost:8983/solr/my_collection/update
JSON gövdesini kullanır.
/update?commit=true
. JSON istek gövdesinin kendisi harika çalışıyor :)