solr
কমান্ড থেকে আমি কীভাবে সমস্ত ডেটা মুছব? আমরা ব্যবহার করছেন solr
সঙ্গেlily
এবংhbase
।
আমি কীভাবে এইচবিএস এবং সোলার উভয় থেকে ডেটা মুছতে পারি?
http://lucene.apache.org/solr/4_10_0/tutorial.html# মুছে ফেলা + ডেটা
solr
কমান্ড থেকে আমি কীভাবে সমস্ত ডেটা মুছব? আমরা ব্যবহার করছেন solr
সঙ্গেlily
এবংhbase
।
আমি কীভাবে এইচবিএস এবং সোলার উভয় থেকে ডেটা মুছতে পারি?
http://lucene.apache.org/solr/4_10_0/tutorial.html# মুছে ফেলা + ডেটা
উত্তর:
আপনি যদি সোলার সূচকটি পরিষ্কার করতে চান -
আপনি 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 ডেটা সাফ করার সাথে খুব বেশি ধারণা নেই।
&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/>
এসএলআর থেকে উত্স দস্তাবেজ: https://wiki.apache.org/solr/ FAQ# কিভাবে_কেন_আই_দেহ_সকল_ডোকিউমেন্ট_ফর্ম_মাই_ইন্ডেক্স ৩.৩
জেসন ডেটা পোস্ট করুন (যেমন কার্ল সহ)
curl -X POST -H 'Content-Type: application/json' \
'http://<host>:<port>/solr/<core>/update?commit=true' \
-d '{ "delete": {"query":"*:*"} }'
আপনি যদি সোলারজির মাধ্যমে সোলার সমস্ত ডেটা মুছতে চান তবে এই জাতীয় কিছু করুন।
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);
}
}
ক্যোয়ারী কমান্ড দ্বারা মুছতে "সমস্ত ডক্সের সাথে ম্যাচ করুন" কোয়েরিটি ব্যবহার করুন :
মুছে ফেলা চালিয়ে যাওয়ার পরে আপনাকে অবশ্যই প্রতিশ্রুতিবদ্ধ করতে হবে, সূচি খালি করার জন্য, নিম্নলিখিত দুটি কমান্ড চালনা করুন:
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>'
সোলারনেট ব্যবহার করে নেট ফ্রেমওয়ার্কের মাধ্যমে সোলার উদাহরণ থেকে সমস্ত নথি মুছতে আমি এখানে এসেছি। এখানে আমি এটি করতে সক্ষম হয়েছি কীভাবে:
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>
এই এক লাইনটি ডেটা সরিয়ে নিয়ে যায় এবং পরিবর্তনটি বহাল থাকে।
আপনি যদি ক্লৌডেরা ৫.x ব্যবহার করে থাকেন তবে এখানে এই ডকুমেন্টেশনে উল্লেখ করা হয়েছে যে লিলি রিয়েল টাইম আপডেট এবং মুছে ফেলাও বজায় রাখে।
ক্লৌডের অনুসন্ধানের সাথে লিলি এইচবিএস এনআরটি সূচক পরিষেবাটি ব্যবহারের জন্য কনফিগার করছে
যেহেতু এইচবিজে এইচবেস টেবিল কোষগুলিতে সন্নিবেশ, আপডেট এবং মুছে ফেলা প্রয়োগ করে, সূচক স্ট্যান্ডার্ড এইচবেস প্রতিলিপি ব্যবহার করে সোলারকে এইচবেস টেবিলের সামগ্রীর সাথে সামঞ্জস্য রাখে।
truncate 'hTable'
এটিও একইভাবে সমর্থিত কিনা তা নিশ্চিত নয় ।
অন্যথায় আপনি কোনও বিশেষ ইভেন্ট বা যে কোনও কিছুতে সোলার এবং এইচবিএস উভয় থেকে আপনার ডেটা সাফ করার জন্য একটি ট্রিগার বা পরিষেবা তৈরি করেন।
সোলার সংগ্রহের সমস্ত দস্তাবেজ মুছতে, আপনি এই অনুরোধটি ব্যবহার করতে পারেন:
curl -X POST -H 'Content-Type: application/json' --data-binary '{"delete":{"query":"*:*" }}' http://localhost:8983/solr/my_collection/update
এটি জেএসএন বডি ব্যবহার করে।
/update?commit=true
। JSON অনুরোধ সংস্থা নিজেই দুর্দান্ত কাজ করে :)
সোলার সূচকটি সাফ করার সময়, আপনার মুছে ফেলা সমস্ত অনুসন্ধানটি চালানোর পরে একটি প্রতিশ্রুতিবদ্ধও করা উচিত এবং অনুকূলিতকরণ করা উচিত। ফুল পদক্ষেপ প্রয়োজন (কার্ল আপনার প্রয়োজন হয়): http://www.alphadevx.com/a/365-Clearing-a-Solr-search-index
আমি একটি জাভাস্ক্রিপ্ট বুকমার্ক তৈরি করেছি যা সোলার অ্যাডমিন 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>');
})();