সোলার এবং hbase থেকে সমস্ত ডেটা কীভাবে মুছবেন


98

solrকমান্ড থেকে আমি কীভাবে সমস্ত ডেটা মুছব? আমরা ব্যবহার করছেন solrসঙ্গেlily এবংhbase

আমি কীভাবে এইচবিএস এবং সোলার উভয় থেকে ডেটা মুছতে পারি?

http://lucene.apache.org/solr/4_10_0/tutorial.html# মুছে ফেলা + ডেটা

উত্তর:


194

আপনি যদি সোলার সূচকটি পরিষ্কার করতে চান -

আপনি HTTP url গুলি করতে পারেন -

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

( [core name]আপনি যে মূলটি মুছতে চান তার নামের সাথে প্রতিস্থাপন করুন )। অথবা ডেটা এক্সএমএল ডেটা পোস্ট করলে এটি ব্যবহার করুন:

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

আপনি commit=trueপরিবর্তনগুলি প্রতিশ্রুতি দেওয়ার জন্য নিশ্চিত হন

যদিও Hbase ডেটা সাফ করার সাথে খুব বেশি ধারণা নেই।


7
কোর আপনি মাল্টিকোর সেটআপ ব্যবহার করা হয় প্রয়োজন হয়।
জয়েন্দ্র

4
এই উত্তরটি কিভাবে আলোচনা hbase সমস্ত টেবিল মুছে ফেলতে: stackoverflow.com/questions/3990952/... । আপনি যদি সারণীতে থাকা ডেটাটি মুছতে চান, আপনি সেগুলি বাদ দেওয়ার পরিবর্তে তাদের কেটে ফেলতে পারেন।
কোডিংফু

এটি কি কেবল সূচকটি মুছে দেয়? বা এটি বাস্তব তথ্যও মুছে ফেলবে?
বিষ্ণু বিশ্বনাথ

6
আপনি হয়ত &commit=trueক্যোয়ারিতে যুক্ত করতে চান তাই এটি হয়ে যায় http://host:port/solr/core/update?stream.body=<delete><query>*:*</query></delete>&commit=trueআমি ভাবছিলাম কেন সমস্ত দস্তাবেজ অপসারণ করা হয়নি।
chris544

4
এটি কাজ করে না। আমি পেয়েছি: HTTP ERROR 404 অ্যাক্সেস / সোলার / আপডেটে সমস্যা। কারণ: সোলার থেকে পাওয়া যায় নি ...
স্টেপান ইয়াকোভেনকো

91

আমি আমার সমস্ত রেকর্ড মুছতে এই অনুরোধটি ব্যবহার করেছি তবে কখনও কখনও এটি সম্পাদন করা প্রয়োজন।

তার জন্য, &commit=trueআপনার অনুরোধে যুক্ত করুন:

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

12

আপনি মুছে ফেলতে নিম্নলিখিত কমান্ডগুলি ব্যবহার করতে পারেন। ক্যোয়ারী কমান্ড দ্বারা মুছতে "সমস্ত ডক্সের সাথে ম্যাচ করুন" কোয়েরিটি ব্যবহার করুন:

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


এসএলআর থেকে উত্স দস্তাবেজ: https://wiki.apache.org/solr/ FAQ# কিভাবে_কেন_আই_দেহ_সকল_ডোকিউমেন্ট_ফর্ম_মাই_ইন্ডেক্স ৩.৩


10

জেসন ডেটা পোস্ট করুন (যেমন কার্ল সহ)

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

8

আপনি যদি সোলারজির মাধ্যমে সোলার সমস্ত ডেটা মুছতে চান তবে এই জাতীয় কিছু করুন।

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

আপনি যদি এইচবেসে সমস্ত ডেটা মুছতে চান তবে এই জাতীয় কিছু করুন।

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

সোলারনেট ব্যবহার করে নেট ফ্রেমওয়ার্কের মাধ্যমে সোলার উদাহরণ থেকে সমস্ত নথি মুছতে আমি এখানে এসেছি। এখানে আমি এটি করতে সক্ষম হয়েছি কীভাবে:

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 এই কমন্ড সলারে সূচকগুলিতে সমস্ত নথি মুছে ফেলবে


আপনি যদি দয়া করে আপনার উত্তরটি সম্পাদনা করতে পারেন এবং আপনার কোডটি কী দেখানো হচ্ছে এবং কেন / কীভাবে সেই প্রশ্নের প্রশ্নের উত্তর দেয় তা ব্যাখ্যা করতে পারলে এটি সত্যই সহায়তা করতে পারে।
লিয়া কোহেন

উপরের উত্তরটি এখন ঠিক আছে ..?
বিট্টু

এটা অবশ্যই আরও বোঝা :)।
লেয়া কোহেন

3

আমি আমার ক্যারিয়ারটি আমার সমস্ত রেকর্ড মুছতে ব্যবহার করেছি।

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

আপনি যদি ক্লৌডেরা ৫.x ব্যবহার করে থাকেন তবে এখানে এই ডকুমেন্টেশনে উল্লেখ করা হয়েছে যে লিলি রিয়েল টাইম আপডেট এবং মুছে ফেলাও বজায় রাখে।

ক্লৌডের অনুসন্ধানের সাথে লিলি এইচবিএস এনআরটি সূচক পরিষেবাটি ব্যবহারের জন্য কনফিগার করছে

যেহেতু এইচবিজে এইচবেস টেবিল কোষগুলিতে সন্নিবেশ, আপডেট এবং মুছে ফেলা প্রয়োগ করে, সূচক স্ট্যান্ডার্ড এইচবেস প্রতিলিপি ব্যবহার করে সোলারকে এইচবেস টেবিলের সামগ্রীর সাথে সামঞ্জস্য রাখে।

truncate 'hTable'এটিও একইভাবে সমর্থিত কিনা তা নিশ্চিত নয় ।

অন্যথায় আপনি কোনও বিশেষ ইভেন্ট বা যে কোনও কিছুতে সোলার এবং এইচবিএস উভয় থেকে আপনার ডেটা সাফ করার জন্য একটি ট্রিগার বা পরিষেবা তৈরি করেন।


1

সোলার সংগ্রহের সমস্ত দস্তাবেজ মুছতে, আপনি এই অনুরোধটি ব্যবহার করতে পারেন:

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

এটি জেএসএন বডি ব্যবহার করে।


অন্যদের দ্বারা নির্দেশিত হিসাবে, সম্ভবত এটি ব্যবহার করা ভাল /update?commit=true। JSON অনুরোধ সংস্থা নিজেই দুর্দান্ত কাজ করে :)
ফ্রেডরিক জাং

0

সোলার সূচকটি সাফ করার সময়, আপনার মুছে ফেলা সমস্ত অনুসন্ধানটি চালানোর পরে একটি প্রতিশ্রুতিবদ্ধও করা উচিত এবং অনুকূলিতকরণ করা উচিত। ফুল পদক্ষেপ প্রয়োজন (কার্ল আপনার প্রয়োজন হয়): http://www.alphadevx.com/a/365-Clearing-a-Solr-search-index


0

আমি একটি জাভাস্ক্রিপ্ট বুকমার্ক তৈরি করেছি যা সোলার অ্যাডমিন 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>');
})();

এখানে চিত্র বর্ণনা লিখুন


0

সোলার আমি নিশ্চিত নই তবে আপনি নীচের মতো ট্র্যাঙ্কেট কমান্ড ব্যবহার করে hbase থেকে সমস্ত ডেটা মুছতে পারেন:

truncate 'table_name'

এটি hbase টেবিল থেকে সমস্ত সারি-কী মুছে ফেলবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.