सॉल और hbase से सभी डेटा को कैसे हटाएं


जवाबों:


190

यदि आप सोलर इंडेक्स को साफ करना चाहते हैं -

आप 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 डेटा समाशोधन के साथ ज्यादा विचार नहीं है।


7
यदि आप मल्टीकोर सेटअप का उपयोग कर रहे हैं तो कोर की आवश्यकता है।
जयेंद्र

1
यह उत्तर बताता है कि hbase की सभी तालिकाएँ कैसे हटाएँ: stackoverflow.com/questions/3990952/… । यदि आप तालिका में डेटा हटाना चाहते हैं, तो आप उन्हें छोड़ने के बजाय उन्हें छोटा कर सकते हैं।
कोडिंगफू

क्या यह केवल सूचकांक को हटाता है? या यह वास्तविक डेटा को भी हटा देगा?
विष्णु विश्वनाथ

6
आप &commit=trueक्वेरी में जोड़ना चाह सकते हैं , इसलिए यह http://host:port/solr/core/update?stream.body=<delete><query>*:*</query></delete>&commit=trueबिना हो जाता है मैं सोच रहा था कि सभी दस्तावेज़ क्यों नहीं हटाए गए थे।
chris544

2
यह काम नहीं करता है। मुझे मिलता है: HTTP ERROR 404 समस्या तक पहुँचने / हल / अद्यतन। कारण: सॉल से नहीं मिला ...
Stepan Yakovenko

91

मैंने अपने सभी रिकॉर्ड को हटाने के लिए इस अनुरोध का उपयोग किया है, लेकिन कभी-कभी ऐसा करना आवश्यक है।

उसके लिए, &commit=trueअपने अनुरोध में जोड़ें :

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

11

हटाने के लिए आप निम्न आदेशों का उपयोग कर सकते हैं। क्वेरी कमांड द्वारा डिलीट में "मैच सभी डॉक्स" क्वेरी का उपयोग करें:

'<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


10

पोस्ट जसन डेटा (जैसे कर्ल के साथ)

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

8

यदि आप 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);
    }
 }

4

क्वेरी कमांड द्वारा डिलीट में "मैच सभी डॉक्स" क्वेरी का उपयोग करें :

आपको डिलीट करने के बाद भी काम करना चाहिए ताकि इंडेक्स को खाली करने के लिए निम्नलिखित दो कमांड चलाएं:

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>यूआरएल में परिभाषित के साथ अच्छी तरह से काम किया । मैंने उत्तर संपादित किया।
अचला डिसनायके


3

मैं यहाँ सोलरनेट का उपयोग करते हुए .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();

इससे सभी दस्तावेज साफ हो गए हैं। (मुझे यकीन नहीं है कि अगर यह बरामद किया जा सकता है, तो मैं सोल के सीखने और परीक्षण के चरण में हूं, इसलिए कृपया इस कोड का उपयोग करने से पहले बैकअप पर विचार करें)


यह बहुत उपयोगी है। धन्यवाद !
करण

3

इस ब्राउज़र में आग

http://localhost:8983/solr/update?stream.body=<delete><query>*:*</query></delete>&commit=true यह कमोड सॉल में इंडेक्स के सभी दस्तावेजों को हटा देगा


यदि आप कृपया अपना उत्तर संपादित कर सकते हैं और समझा सकते हैं कि आप जो कोड दिखा रहे हैं, और वह कोड क्यों / कैसे प्रश्न का उत्तर देता है, तो यह वास्तव में मदद कर सकता है।
कोहेन

क्या उपरोक्त उत्तर अब ठीक है ..?
बिट्टू

यह निश्चित रूप से अधिक समझा गया है :)।
ली कोहेन

2

मैंने अपने सभी रिकॉर्ड को हटाने के लिए इस क्वेरी का उपयोग किया है।

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

2

मैंने नीचे के चरणों की कोशिश की। यह अच्छा काम करता है।

  • कृपया सुनिश्चित करें कि SOLR सर्वर इसे चला रहा है
  • बस लिंक पर क्लिक करें सभी एसओएलआर डेटा हटाएं जो आपके सभी एसओएलआर अनुक्रमित डेटा को हिट और हटा देगा फिर आपको आउटपुट पर स्क्रीन पर निम्न विवरण मिलेगा।

    <response>
      <lst name="responseHeader">
        <int name="status">0</int>
        <int name="QTime">494</int>
      </lst>
    </response>
  • यदि आपको उपरोक्त आउटपुट नहीं मिल रहा है, तो कृपया निम्नलिखित को सुनिश्चित करें।

    • मैंने उपर्युक्त लिंक पर डिफ़ॉल्ट host(लोकलहोस्ट) और port(8080) का उपयोग किया। कृपया होस्ट और पोर्ट को बदल दें यदि यह आपके अंत में अलग है।
    • डिफ़ॉल्ट कोर नाम होना चाहिए collection/ collection1। मैंने collection1उपरोक्त लिंक में उपयोग किया है। कृपया इसे बदल दें, यदि आपका मुख्य नाम अलग है।

1

यदि आपको सभी डेटा को साफ करने की आवश्यकता है, तो यह संग्रह को फिर से बनाने के लिए तेज़ हो सकता है, जैसे

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

1

ऊपर के कर्ल उदाहरण मेरे लिए विफल हो गए जब मैंने उन्हें एक साइबरविन टर्मिनल से भाग दिया। इस तरह की त्रुटियां थीं जब मैंने स्क्रिप्ट का उदाहरण दिया।

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>

इस एक लाइन ने डेटा को दूर कर दिया और परिवर्तन जारी रहा।


1

Solr मुझे यकीन नहीं है लेकिन आप नीचे दिए गए truncate कमांड का उपयोग करके hbase के सभी डेटा को हटा सकते हैं:

truncate 'table_name'

यह hbase तालिका से सभी पंक्ति-कुंजियों को हटा देगा।


0

सोलर इंडेक्स को हटाते समय, आपको एक कमिट भी करना चाहिए और डिलीट-ऑल क्वेरी को चलाने के बाद ऑप्टिमाइज़ करना चाहिए। पूर्ण चरणों की आवश्यकता है (कर्ल आप सभी की जरूरत है): http://www.alphadevx.com/a/365-Clearing-a-Solr-search-index


0

मैंने एक जावास्क्रिप्ट बुकमार्क बनाया जो सोलर एडमिन यूआई में डिलीट लिंक जोड़ता है

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>');
})();

यहां छवि विवरण दर्ज करें


0

यदि आप Cloudera 5.x का उपयोग कर रहे हैं, तो यहां इस दस्तावेज में उल्लेख किया गया है कि लिली रियल टाइम अपडेशन और डिलीट को भी बनाए रखती है।

क्लाउड खोज के साथ उपयोग के लिए लिली HBase NRT इंडेक्सर सेवा को कॉन्फ़िगर करना

जैसा कि HBase आवेषण, अद्यतन और HBase तालिका कोशिकाओं को हटाता है, जैसा कि अनुक्रमणक मानक HBase प्रतिकृति का उपयोग करते हुए Solr को HBase तालिका सामग्री के अनुरूप रखता है।

यकीन नहीं होता तो truncate 'hTable'उसी में सपोर्ट भी।

इसके अलावा, आप किसी विशेष घटना या किसी भी चीज़ पर अपने डेटा को Solr और HBase से साफ़ करने के लिए एक ट्रिगर या सेवा बनाते हैं।


0

सोलर संग्रह के सभी दस्तावेजों को हटाने के लिए, आप इस अनुरोध का उपयोग कर सकते हैं:

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

यह JSON बॉडी का उपयोग करता है।


जैसा कि दूसरों ने बताया, इसका उपयोग करना बेहतर है /update?commit=true। JSON अनुरोध बॉडी स्वयं महान काम करता है :)
फ्रेडरिक झांग
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.