ইলাস্টিকসার্চ দক্ষ এবং মাপযোগ্য ডেটা স্টোরেজ এবং পুনরুদ্ধারের জন্য একটি জনপ্রিয় প্রযুক্তি। যাইহোক, এর কার্যকারিতা এবং ডেটা অখণ্ডতা বজায় রাখার জন্য একটি গুরুত্বপূর্ণ অনুশীলন প্রয়োজন যাকে বলা হয় রিইন্ডেক্সিং। ইনডেক্সিং হল ইলাস্টিকসার্চে ডেটা যোগ করার প্রাথমিক প্রক্রিয়া, যখন ডেটার নির্ভুলতা বজায় রাখা এবং সার্চের পারফরম্যান্স অপ্টিমাইজ করার জন্য রিইন্ডেক্সিং অপরিহার্য।
আপনি একজন অভিজ্ঞ ইলাস্টিকসার্চ ব্যবহারকারী হোন বা সবেমাত্র আপনার যাত্রা শুরু করুন, একটি দক্ষ ইলাস্টিকসার্চ ক্লাস্টার বজায় রাখার জন্য রিইনডেক্সিং বোঝা গুরুত্বপূর্ণ। এই প্রবন্ধে, আমরা ইলাস্টিকসার্চ রিইন্ডেক্সিংয়ের প্রয়োজনীয় বিষয়গুলি নিয়ে আলোচনা করব, যখন এটি প্রয়োজন তখন উত্তর দেওয়া, কীভাবে এটি ট্রিগার করা যায় এবং আপনার ইলাস্টিকসার্চ ক্লাস্টার থেকে সর্বাধিক সুবিধা পাওয়ার জন্য সেরা অনুশীলনগুলি।
ইলাস্টিকসার্চে, রিইনডেক্সিং ডেটা অখণ্ডতা বজায় রাখতে এবং কর্মক্ষমতা বাড়াতে সাহায্য করে। সহজ কথায়, এটি একটি সূচক থেকে অন্য সূচকে ডেটা অনুলিপি করার প্রক্রিয়া। যদিও এটি সোজা মনে হতে পারে, সঠিকভাবে না করা হলে এটি ধীরগতির ডেটা পুনরুদ্ধার বা এমনকি ভুল ফলাফলের মতো সমস্যা সৃষ্টি করতে পারে
আপনার ইলাস্টিক সার্চ সূচকগুলিকে সুসংগঠিত লাইব্রেরি হিসাবে কল্পনা করুন। সময়ের সাথে সাথে, বইগুলিকে আপডেট করা, পুনর্বিন্যাস করা বা এমনকি প্রতিস্থাপনের প্রয়োজন হতে পারে। পুনঃসূচীকরণ লাইব্রেরির তাকগুলিকে পুনর্বিন্যাস করা বা সবকিছু ঠিক রাখার জন্য বই আপডেট করার মতো। এটি ছাড়া, আপনার লাইব্রেরি অসংগঠিত হয়ে যেতে পারে, যার ফলে আপনার ডেটাতে ধীর অনুসন্ধান এবং সম্ভাব্য ভুল হতে পারে।
এই সাদৃশ্যটি ইলাস্টিকসার্চে রিইন্ডেক্সিং বোঝার গুরুত্বকে আন্ডারস্কোর করে। এটা শুধু তথ্য অনুলিপি সম্পর্কে নয়; এটি দক্ষ অনুসন্ধান এবং পুনরুদ্ধারের জন্য আপনার "লাইব্রেরির" অখণ্ডতা বজায় রাখার বিষয়ে। চলুন দেখে নেওয়া যাক কখন রিইন্ডেক্সিং করা প্রয়োজন এবং কীভাবে এটির উপরে রাখা যায়।
আপনার ইলাস্টিকসার্চ ডেটা মডেল বা ম্যাপিং-এ পরিবর্তনগুলি ঘটলে বা যখন আপনি কর্মক্ষমতা বর্ধিতকরণ খুঁজছেন তখন রিইনডেক্সিং অপরিহার্য হয়ে ওঠে। এই বিভাগে, কেন পুনঃসূচীকরণের প্রয়োজন তার চারপাশের সূক্ষ্মতাগুলি বোঝার জন্য আমরা এই পরিস্থিতিগুলি আরও বিশদভাবে দেখব।
ডেটা মডেলগুলির কাঠামোগত পরিবর্তনগুলি ইলাস্টিকসার্চের মধ্যে ডেটা কীভাবে গঠন করা হয় তার পরিবর্তনগুলিকে বোঝায়। এই পরিবর্তনগুলির মধ্যে নতুন ক্ষেত্র যোগ করা বা অপসারণ করা বা বিদ্যমান ক্ষেত্রগুলির ডেটা প্রকারগুলি পরিবর্তন করার মতো বিষয়গুলি অন্তর্ভুক্ত থাকতে পারে।
নতুন ক্ষেত্র প্রবর্তন করার জন্য প্রায়শই একটি পুনঃসূচীর প্রয়োজন হয় তা নিশ্চিত করার জন্য যে ইলাস্টিকসার্চ সেই ক্ষেত্রে সঞ্চিত ডেটার জন্য কীভাবে দক্ষতার সাথে অনুসন্ধান করতে হয় তা জানে। ডেটা প্রকারগুলি পরিবর্তন করার জন্য সম্পূর্ণরূপে একটি নতুন সূচক প্রয়োজন কারণ আপনি জায়গায় ডেটা প্রকারগুলি পরিবর্তন করতে পারবেন না। একবার পরিবর্তিত ডেটা টাইপের জন্য নতুন ম্যাপিং তৈরি হয়ে গেলে ডেটার পুনঃসূচীকরণ প্রয়োজন।
ইলাস্টিকসার্চের স্কিমা-অন-রাইট পদ্ধতির কারণে এই কাঠামোগত পরিবর্তনগুলির জন্য পুনঃসূচীকরণের প্রয়োজন। ইলাস্টিকসার্চ ডেটা ইনজেস্ট করার সাথে সাথে সূচী করে এবং ডেটা কাঠামোর যে কোনও পরিবর্তন নতুন স্কিমার সাথে লেখা বিদ্যমান ডেটা এবং ডেটার মধ্যে অসঙ্গতি সৃষ্টি করতে পারে। ফলস্বরূপ, পুনঃসূচীকরণ ছাড়াই, ডেটা আইটেমগুলির স্কিমা অমিলের কারণে অনুসন্ধান অনুসন্ধানগুলি অপ্রত্যাশিত বা ভুল ফলাফল দিতে পারে৷ এটি ডেটা নির্ভুলতা এবং অনুসন্ধান কর্মক্ষমতা উভয়ের উপর প্রভাব ফেলতে পারে।
ম্যাপিংগুলি ইলাস্টিকসার্চে ডেটা কীভাবে ইন্ডেক্স করা হয় এবং জিজ্ঞাসা করা হয় তার ব্লুপ্রিন্ট হিসাবে কাজ করে৷ যখন এই ম্যাপিংগুলি সংশোধন করা হয় তখন সাধারণত পুনঃসূচীকরণের প্রয়োজন হয়।
ম্যাপিংগুলি ইলাস্টিকসার্চের মধ্যে ক্ষেত্রগুলির ডেটা প্রকার এবং বৈশিষ্ট্যগুলিকে সংজ্ঞায়িত করে৷ এই ম্যাপিং-এ যেকোনও পরিবর্তন ডাটা কিভাবে ইন্ডেক্স করা, সঞ্চয় করা এবং পুনরুদ্ধার করা হয় তা প্রভাবিত করে। উদাহরণস্বরূপ, একটি টেক্সট ক্ষেত্রকে একটি তারিখের ক্ষেত্রে পরিবর্তন করা মৌলিকভাবে পরিবর্তন করে যে কীভাবে ডেটা প্রক্রিয়া করা হয় এবং জিজ্ঞাসা করা হয়। ইলাস্টিক সার্চ ম্যাপিং সংজ্ঞার উপর ভিত্তি করে ডেটা সামঞ্জস্য প্রয়োগ করে। ম্যাপিংয়ের পরিবর্তনগুলি বিদ্যমান ডেটা এবং আপডেট করা স্কিমার মধ্যে অসঙ্গতি সৃষ্টি করতে পারে যদি ডেটা পুনরায় সূচীভুক্ত না হয়।
যখন ম্যাপিংগুলি পরিবর্তন করা হয়, বিশেষ করে যদি এতে ডেটা প্রকার বা ক্ষেত্রের বৈশিষ্ট্য পরিবর্তন করা হয়, ব্যাকফিলিংও গুরুত্বপূর্ণ হয়ে ওঠে। ব্যাকফিলিং হল একটি নতুন স্কিমা বা ডেটা স্ট্রাকচারের সাথে সারিবদ্ধ করার জন্য বিদ্যমান ডেটাকে পূর্ববর্তীভাবে পপুলেট বা আপডেট করার প্রক্রিয়া। এর মানে হল যে ম্যাপিং পরিবর্তনের পরে বিদ্যমান ডেটা এখনও দক্ষতার সাথে এবং সঠিকভাবে জিজ্ঞাসা করা যেতে পারে।
রিইন্ডেক্সিং শুধুমাত্র একটি রুটিন রক্ষণাবেক্ষণের কাজ নয়, এটি ইলাস্টিকসার্চের মধ্যে অনুসন্ধান কর্মক্ষমতা অপ্টিমাইজ করার জন্য একটি শক্তিশালী টুল। উদাহরণস্বরূপ, রিইন্ডেক্সিং আপনাকে একটি সূচকে শার্ডের সংখ্যা পরিবর্তন করতে দেয়। শার্ড গণনা সামঞ্জস্য করা, বা রিশার্ডিং, ডেটা আরও সমানভাবে বিতরণ করতে পারে, অনুসন্ধান কর্মক্ষমতা উন্নত করতে নির্দিষ্ট নোডগুলিতে অসম কাজের চাপ প্রতিরোধ করে।
পুনঃসূচীকরণও সূচকগুলিকে একত্রিত করতে ব্যবহার করা যেতে পারে। ধরা যাক আপনার একাধিক ছোট সূচক রয়েছে যা একই ডেটা কাঠামো ভাগ করে এবং প্রায়শই একসাথে জিজ্ঞাসা করা হয়। পুনঃসূচীকরণ তাদের একটি একক, বৃহত্তর সূচকে একীভূত করতে পারে। এটি অসংখ্য ছোট সূচক পরিচালনার ওভারহেডকে হ্রাস করে যা ঘুরে ঘুরে অনুসন্ধানের গতি বাড়াতে পারে।
অবশেষে, রাউটিং উন্নত করতে রিইন্ডেক্সিং ব্যবহার করা যেতে পারে। রাউটিং কৌশলগুলিকে কার্যকরভাবে পুনঃসূচীকরণ এবং প্রয়োগ করে, আপনি অনুসন্ধানের প্রয়োজন শার্ডের সংখ্যা কমিয়ে নির্দিষ্ট শার্ডগুলিতে অনুসন্ধানগুলিকে রুট করতে পারেন। এই টার্গেটেড পদ্ধতিটি সার্চ ক্যোয়ারীগুলিকে উল্লেখযোগ্যভাবে ত্বরান্বিত করতে পারে যদি আপনার ডেটা ঘন ঘন নির্দিষ্ট কী যেমন ব্যবহারকারী আইডি দ্বারা অনুসন্ধান করা হয়।
ইলাস্টিকসার্চ সংস্করণ 6.X থেকে 8.0 (বর্তমান প্রধান সংস্করণ) এবং তার পরে আপগ্রেড করার সময়, আপনাকে সংস্করণ 6-এ তৈরি যেকোন সূচকগুলিকে পুনরায় সূচীকরণ করতে হতে পারে। ইলাস্টিকসার্চের ডেটা স্ট্রাকচার এবং অন্তর্নিহিত প্রক্রিয়াগুলি এই সংস্করণগুলির মধ্যে উল্লেখযোগ্যভাবে পরিবর্তিত হয়েছে যাতে সামঞ্জস্য এবং সর্বোত্তম কর্মক্ষমতার জন্য পুনঃসূচীকরণের প্রয়োজন হয়। .
পুনঃইনডেক্সিং প্রক্রিয়া নিশ্চিত করে যে ডেটা আপডেট করা কাঠামো এবং নতুন কার্যকারিতার সাথে সারিবদ্ধ হয় যাতে আপনি পুরানো থেকে নতুনে নির্বিঘ্নে স্থানান্তর করতে পারেন। ইলাস্টিকসার্চ এই প্রক্রিয়ায় সাহায্য করার জন্য তাদের আপগ্রেড সহকারী ব্যবহার করার পরামর্শ দেয়।
ইলাস্টিকসার্চে রিইন্ডেক্সিং ইলাস্টিকসার্চ রিইন্ডেক্স API এর মাধ্যমে সম্ভব হয়েছে। Reindex API আপনার বিদ্যমান সূচক এবং আপনি যে নতুন সূচক তৈরি বা পরিবর্তন করতে চান তার মধ্যে সেতু হিসাবে কাজ করে। এর প্রাথমিক উদ্দেশ্য হল এক সূচক থেকে অন্য সূচকে ডেটার দক্ষ স্থানান্তর সক্ষম করা, এর উপরে, আপনি এটিও করতে পারেন:
উৎস সূচক থেকে লক্ষ্য সূচকে নির্বাচনীভাবে নথিগুলি অনুলিপি করুন।
জটিল ডেটা ট্রান্সফরমেশন প্রয়োগ করুন, যেমন ফিল্ড রিনেমিং বা টাইপ কনভার্সন।
নির্দিষ্ট মানদণ্ডের উপর ভিত্তি করে ডেটা ফিল্টার করুন।
থ্রটলিং এবং রিফ্রেশ ব্যবধানের মত বিকল্পগুলির সাথে ইন্ডেক্সিং প্রক্রিয়া নিয়ন্ত্রণ করুন।
Reindex API ব্যবহার করার আগে, নিশ্চিত করুন যে লক্ষ্য সূচকটি, যেখানে আপনি আপনার ডেটা সরাতে বা রূপান্তর করতে চান, তৈরি করা হয়েছে এবং সঠিকভাবে কনফিগার করা হয়েছে।
রিইন্ডেক্সিং ট্রিগার করার জন্য, আপনাকে _reindex
এন্ডপয়েন্টে একটি POST অনুরোধ তৈরি করতে হবে, উৎস এবং লক্ষ্য সূচকের পাশাপাশি যে কোনো পছন্দসই রূপান্তর বা ফিল্টার উল্লেখ করে। একটি উদাহরণ পুনঃসূচীপত্র পোস্ট অনুরোধ নিম্নরূপ দেখতে পারে.
POST /_reindex { "source": { "index": "source_index" }, "dest": { "index": "target_index" }, "script": { "source": "ctx._source.new_field = 'transformed value'" }, "query": { "term": { "category.keyword": "example" } } }
একবার আপনার অনুরোধটি তৈরি হয়ে গেলে আপনি অনুরোধটি ইলাস্টিকসার্চে পাঠাতে পারেন, রিইন্ডেক্সিং প্রক্রিয়া শুরু করে। Elasticsearch আপনার সংজ্ঞায়িত নির্দেশাবলী অনুসরণ করে উৎস সূচক থেকে লক্ষ্য সূচকে ডেটা অনুলিপি করা শুরু করবে।
একবার রিইন্ডেক্সিং সম্পূর্ণ হয়ে গেলে, টার্গেট ইনডেক্সের ডেটা ভালোভাবে পরীক্ষা করুন যাতে এটি আপনার প্রত্যাশার সাথে সারিবদ্ধ হয়। উদাহরণস্বরূপ, আপনি উৎস এবং লক্ষ্য সূচকগুলির মধ্যে ফিল্ড ম্যাপিংগুলি তুলনা করতে পারেন যাতে নিশ্চিত করা যায় যে পুনঃসূচীকরণের সময় ক্ষেত্রগুলি সঠিকভাবে ম্যাপ করা হয়েছিল। আপনি উত্স এবং লক্ষ্য সূচক উভয় থেকে নথির একটি নমুনা পুনরুদ্ধার করতে পারেন এবং ডেটা সঠিকভাবে পুনঃসূচীকৃত হয়েছে তা যাচাই করতে তাদের তুলনা করতে পারেন।
ইলাস্টিকসার্চের মধ্যে পুনঃসূচীকরণ করার সময়, আপনার এই সর্বোত্তম অনুশীলনগুলি অনুসরণ করা উচিত তা নিশ্চিত করার জন্য পুনঃসূচীকরণ পদ্ধতিটি কোনও ডেটা ক্ষতি ছাড়াই মসৃণ এবং বিদ্যমান ক্লাস্টার ক্রিয়াকলাপের উপর সামান্য প্রভাব রয়েছে।
কোনো রিইন্ডেক্সিং কার্যকলাপ শুরু করার আগে, আপনার ক্লাস্টার ব্যাক আপ করা গুরুত্বপূর্ণ। এই সতর্কতামূলক পদক্ষেপটি একটি নিরাপত্তা জাল হিসাবে কাজ করে, পুনঃসূচীকরণ প্রক্রিয়া চলাকালীন কোনো অপ্রত্যাশিত সমস্যা দেখা দিলে মূল অবস্থায় ফিরে যাওয়ার একটি উপায় প্রদান করে।
রিইন্ডেক্স করার পরেও সোর্স ইনডেক্স থাকা উচিত, তবে গুরুত্বপূর্ণ পরিবর্তন করার আগে সবসময় আপনার ডেটার একটি নির্ভরযোগ্য কপি থাকা একটি মৌলিক নীতি।
পুনঃসূচীকরণের সময় সম্ভাব্য ঝুঁকি এবং চ্যালেঞ্জগুলি প্রশমিত করতে, প্রথমে একটি প্রাক-উৎপাদন পরিবেশে অপারেশনটি সম্পাদন করার পরামর্শ দেওয়া হয়। এটি করার মাধ্যমে, আপনি উত্পাদন ব্যবস্থাকে প্রভাবিত না করেই যে কোনও অপ্রত্যাশিত সমস্যা সনাক্ত করতে এবং সমাধান করতে পারেন। প্রি-প্রোডাকশন এনভায়রনমেন্টে একবার প্রক্রিয়াটি সম্পন্ন এবং যাচাই করা হয়ে গেলে, এটি নিরাপদে উৎপাদনে চালানো যেতে পারে।
আপনার পরিকাঠামোতে চাপ রোধ করার জন্য রিইন্ডেক্সিংয়ের সময় সিস্টেম সংস্থানগুলি নিরীক্ষণ করা গুরুত্বপূর্ণ। রিইন্ডেক্সিং রিসোর্স-ইনটেনসিভ হতে পারে, বিশেষ করে বড় ডেটাসেটের জন্য। CPU, মেমরি, ডিস্ক ব্যবহার, এবং নেটওয়ার্ক কার্যকলাপের উপর ঘনিষ্ঠ নজর রাখা সম্পদ বরাদ্দ অপ্টিমাইজ করতে সাহায্য করতে পারে, কর্মক্ষমতা বাধা সৃষ্টি না করে প্রক্রিয়াটি দক্ষতার সাথে চলে তা নিশ্চিত করে। সম্পদের ব্যবহার পরীক্ষা করতে আপনি নোড পরিসংখ্যান API ব্যবহার করতে পারেন।
GET /_nodes/stats
এটি একটি প্রতিক্রিয়া প্রদান করবে যা নিম্নরূপ দেখায়।
{ "_nodes": { "total": 2, "successful": 2, "failed": 0 }, "cluster_name": "my_cluster", "nodes": { "node_id1": { "name": "node_name1", "process": { "cpu": { "percent": 30, } }, "jvm": { "mem": { "heap_used_percent": 40.3, "heap_used_in_bytes": 123456789, "heap_max_in_bytes": 256000000 } } }, "node_id2": { "name": "node_name2", "process": { "cpu": { "percent": 50, } }, "jvm": { "mem": { "heap_used_percent": 60.8, "heap_used_in_bytes": 210987654, "heap_max_in_bytes": 256000000 } } } } }
আপনি যদি পুনঃসূচীকরণকে খুব নিবিড় বলে মনে করেন, আপনি পুনরায় সূচীপত্রের অনুরোধ জমা দেওয়ার সময় requests_per_second
প্যারামিটার সেট করে প্রক্রিয়াটিকে থ্রোটল করতে পারেন। এটি প্যারামিটার দ্বারা সেট করা সেকেন্ডের সংখ্যার জন্য ব্যাচগুলির মধ্যে একটি ঘুম যোগ করবে, ব্যাচগুলির মধ্যে একটি কুলডাউন সময় প্রদান করতে।
একবার পুনঃসূচীকরণ সম্পূর্ণ হলে আপনাকে লক্ষ্য সূচকে ডেটা যাচাই করতে হবে যাতে এটি প্রত্যাশিত হিসাবে দেখায়। এই বৈধতা প্রক্রিয়াটি নথির সংখ্যা, ফিল্ড ম্যাপিং এবং অনুসন্ধান ক্যোয়ারী সহ বিভিন্ন পরীক্ষাকে অন্তর্ভুক্ত করা উচিত।
ইলাস্টিকসার্চ নিঃসন্দেহে NoSQL অনুসন্ধান এবং বিশ্লেষণের জায়গায় একটি বিশিষ্ট সমাধান হিসাবে নিজেকে প্রতিষ্ঠিত করেছে। যাইহোক, বিকল্প সমাধানগুলি অন্বেষণ করা মূল্যবান যা ডেটা ইন্ডেক্সিং এবং অনুসন্ধানের জন্য অনন্য পদ্ধতির প্রস্তাব করে, বিশেষ করে রকসেটের মতো।
রকসেট হল ইলাস্টিকসার্চের একটি ক্লাউড-নেটিভ বিকল্প এবং ডেটা ইনডেক্সিং এবং কোয়েরি করার ক্ষেত্রে একটি ভিন্ন দৃষ্টিভঙ্গি অফার করে। ইলাস্টিকসার্চের স্কিমা-অন-রাইট পদ্ধতির বিপরীতে, রকসেট স্কিমলেস ইনজেশনের অনুমতি দেয়। আপফ্রন্ট স্কিমা সংজ্ঞার প্রয়োজন ছাড়াই ডেটা ইনজেস্ট করা এবং জিজ্ঞাসা করা যেতে পারে, পুনঃসূচীকরণের প্রয়োজন ছাড়াই সদা-বিকশিত ডেটাসেটগুলি পরিচালনা করার ক্ষেত্রে আরও নমনীয়তা সরবরাহ করে।
সূচক ব্যবস্থাপনার ক্ষেত্রে, রকসেট তার একত্রিত ইন্ডেক্সিং মডেল থেকে উপকৃত হয় যেখানে একটি সারি সূচক, একটি কলাম সূচী এবং একটি অনুসন্ধান সূচক সবই ডেটার জন্য স্বয়ংক্রিয়ভাবে তৈরি হয় যেহেতু এটি ইনজেস্ট হয়। এটি ইলাস্টিকসার্চের সাথে বৈপরীত্য, যেখানে ব্যবহারকারীদের দ্বারা সূচীগুলি তৈরি করা হয় এবং কাঠামোগত পরিবর্তনগুলি প্রায়ই সময় সাপেক্ষ পুনঃসূচীকরণ পদ্ধতির প্রয়োজন হয়।
যদিও ইলাস্টিকসার্চ বিভিন্ন ব্যবহারের ক্ষেত্রে একটি শক্তিশালী সমাধান হিসাবে রয়ে গেছে, রকসেটের মতো বিকল্পগুলি অন্বেষণ করা দরকারী হতে পারে, বিশেষ করে যদি আপনি ইলাস্টিকসার্চে পুনঃসূচীকরণ একটি ঘন ঘন কার্যকলাপ হয়ে উঠতে দেখেন।
ইলাস্টিকসার্চে রিইনডেক্সিং একটি মৌলিক প্রক্রিয়া এবং ডেটা স্ট্রাকচার বিকশিত হওয়ার সাথে সাথে অনুসন্ধান ফলাফলের দক্ষতা এবং নির্ভুলতা বজায় রাখার জন্য গুরুত্বপূর্ণ।
আপনি যদি দেখেন যে রিইন্ডেক্সিং আপনার দলের জন্য একটি ধ্রুবক সময়ের বোঝা হয়ে উঠছে তবে রকসেটের মতো বিকল্প সমাধানগুলি অন্বেষণ করা মূল্যবান হতে পারে। রকসেট একটি আরও সুগমিত সূচক ব্যবস্থাপনা প্রক্রিয়া অফার করে যা ডেভেলপারদের আরও মান-সংযোজন ক্রিয়াকলাপগুলিতে মনোনিবেশ করতে সক্ষম করে।