मैं solr
कमांड से सभी डेटा कैसे हटाऊं ? हम और के solr
साथ प्रयोग कर रहे हैं ।lily
hbase
मैं hbase और solr दोनों से डेटा कैसे हटा सकता हूं?
http://lucene.apache.org/solr/4_10_0/tutorial.html#Deleting+Data
मैं solr
कमांड से सभी डेटा कैसे हटाऊं ? हम और के solr
साथ प्रयोग कर रहे हैं ।lily
hbase
मैं hbase और solr दोनों से डेटा कैसे हटा सकता हूं?
http://lucene.apache.org/solr/4_10_0/tutorial.html#Deleting+Data
जवाबों:
यदि आप सोलर इंडेक्स को साफ करना चाहते हैं -
आप http url फायर कर सकते हैं -
http://host:port/solr/[core name]/update?stream.body=<delete><query>*:*</query></delete>&commit=true
( [core name]
उस कोर के नाम से बदलें जिसे आप हटाना चाहते हैं)। या डेटा xml डेटा पोस्ट करने पर इसका उपयोग करें:
<delete><query>*:*</query></delete>
सुनिश्चित करें कि आप commit=true
परिवर्तनों का उपयोग करने के लिए उपयोग करते हैं
हालांकि hbase डेटा समाशोधन के साथ ज्यादा विचार नहीं है।
&commit=true
क्वेरी में जोड़ना चाह सकते हैं , इसलिए यह http://host:port/solr/core/update?stream.body=<delete><query>*:*</query></delete>&commit=true
बिना हो जाता है मैं सोच रहा था कि सभी दस्तावेज़ क्यों नहीं हटाए गए थे।
हटाने के लिए आप निम्न आदेशों का उपयोग कर सकते हैं। क्वेरी कमांड द्वारा डिलीट में "मैच सभी डॉक्स" क्वेरी का उपयोग करें:
'<delete><query>*:*</query></delete>
आपको डिलीट करने के बाद भी काम करना चाहिए ताकि इंडेक्स को खाली करने के लिए निम्नलिखित दो कमांड चलाएं:
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'
आपके ब्राउज़र में दो बुकमार्क जोड़ने के लिए एक और रणनीति होगी:
http://localhost:8983/solr/update?stream.body=<delete><query>*:*</query></delete>
http://localhost:8983/solr/update?stream.body=<commit/>
SOLR से स्रोत डॉक्स:
https://wiki.apache.org/solr/FAQ#How_can_I_delete_all_documents_from_my_index.3F
पोस्ट जसन डेटा (जैसे कर्ल के साथ)
curl -X POST -H 'Content-Type: application/json' \
'http://<host>:<port>/solr/<core>/update?commit=true' \
-d '{ "delete": {"query":"*:*"} }'
यदि आप Solr के माध्यम से Solr में मौजूद सभी डेटा को हटाना चाहते हैं, तो कुछ ऐसा करें।
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 में सभी डेटा को हटाना चाहते हैं, तो ऐसा कुछ करें।
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);
}
}
क्वेरी कमांड द्वारा डिलीट में "मैच सभी डॉक्स" क्वेरी का उपयोग करें :
आपको डिलीट करने के बाद भी काम करना चाहिए ताकि इंडेक्स को खाली करने के लिए निम्नलिखित दो कमांड चलाएं:
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>
यूआरएल में परिभाषित के साथ अच्छी तरह से काम किया । मैंने उत्तर संपादित किया।
कमांड लाइन के उपयोग से:
bin/post -c core_name -type text/xml -out yes -d $'<delete><query>*:*</query></delete>'
मैं यहाँ सोलरनेट का उपयोग करते हुए .net फ्रेमवर्क के माध्यम से सभी दस्तावेज़ों को हटाने के लिए देख रहा हूँ। यहाँ है कि मैं इसे कैसे कर पा रहा था:
Startup.Init<MyEntity>("http://localhost:8081/solr");
ISolrOperations<MyEntity> solr =
ServiceLocator.Current.GetInstance<ISolrOperations<MyEntity>>();
SolrQuery sq = new SolrQuery("*:*");
solr.Delete(sq);
solr.Commit();
इससे सभी दस्तावेज साफ हो गए हैं। (मुझे यकीन नहीं है कि अगर यह बरामद किया जा सकता है, तो मैं सोल के सीखने और परीक्षण के चरण में हूं, इसलिए कृपया इस कोड का उपयोग करने से पहले बैकअप पर विचार करें)
इस ब्राउज़र में आग
http://localhost:8983/solr/update?stream.body=<delete><query>*:*</query></delete>&commit=true
यह कमोड सॉल में इंडेक्स के सभी दस्तावेजों को हटा देगा
मैंने नीचे के चरणों की कोशिश की। यह अच्छा काम करता है।
बस लिंक पर क्लिक करें सभी एसओएलआर डेटा हटाएं जो आपके सभी एसओएलआर अनुक्रमित डेटा को हिट और हटा देगा फिर आपको आउटपुट पर स्क्रीन पर निम्न विवरण मिलेगा।
<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">494</int>
</lst>
</response>
यदि आपको उपरोक्त आउटपुट नहीं मिल रहा है, तो कृपया निम्नलिखित को सुनिश्चित करें।
host
(लोकलहोस्ट) और port
(8080) का उपयोग किया। कृपया होस्ट और पोर्ट को बदल दें यदि यह आपके अंत में अलग है।collection
/ collection1
। मैंने collection1
उपरोक्त लिंक में उपयोग किया है। कृपया इसे बदल दें, यदि आपका मुख्य नाम अलग है।ऊपर के कर्ल उदाहरण मेरे लिए विफल हो गए जब मैंने उन्हें एक साइबरविन टर्मिनल से भाग दिया। इस तरह की त्रुटियां थीं जब मैंने स्क्रिप्ट का उदाहरण दिया।
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>
मुझे एक प्रोजेक्ट में उन सभी को मिटा देने के लिए कोर नामों पर एक लूप में डिलीट का उपयोग करने की आवश्यकता थी।
नीचे दी गई इस क्वेरी ने मेरे लिए सिग्विन टर्मिनल स्क्रिप्ट में काम किया।
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>
इस एक लाइन ने डेटा को दूर कर दिया और परिवर्तन जारी रहा।
सोलर इंडेक्स को हटाते समय, आपको एक कमिट भी करना चाहिए और डिलीट-ऑल क्वेरी को चलाने के बाद ऑप्टिमाइज़ करना चाहिए। पूर्ण चरणों की आवश्यकता है (कर्ल आप सभी की जरूरत है): http://www.alphadevx.com/a/365-Clearing-a-Solr-search-index
मैंने एक जावास्क्रिप्ट बुकमार्क बनाया जो सोलर एडमिन यूआई में डिलीट लिंक जोड़ता है
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 का उपयोग कर रहे हैं, तो यहां इस दस्तावेज में उल्लेख किया गया है कि लिली रियल टाइम अपडेशन और डिलीट को भी बनाए रखती है।
क्लाउड खोज के साथ उपयोग के लिए लिली HBase NRT इंडेक्सर सेवा को कॉन्फ़िगर करना
जैसा कि HBase आवेषण, अद्यतन और HBase तालिका कोशिकाओं को हटाता है, जैसा कि अनुक्रमणक मानक HBase प्रतिकृति का उपयोग करते हुए Solr को HBase तालिका सामग्री के अनुरूप रखता है।
यकीन नहीं होता तो truncate 'hTable'
उसी में सपोर्ट भी।
इसके अलावा, आप किसी विशेष घटना या किसी भी चीज़ पर अपने डेटा को Solr और HBase से साफ़ करने के लिए एक ट्रिगर या सेवा बनाते हैं।
सोलर संग्रह के सभी दस्तावेजों को हटाने के लिए, आप इस अनुरोध का उपयोग कर सकते हैं:
curl -X POST -H 'Content-Type: application/json' --data-binary '{"delete":{"query":"*:*" }}' http://localhost:8983/solr/my_collection/update
यह JSON बॉडी का उपयोग करता है।
/update?commit=true
। JSON अनुरोध बॉडी स्वयं महान काम करता है :)