এই পোস্টে, আমি Elasticsearch® aliases-র ওপর আলোচনা করব ObjectRocket-হোস্টেড Curator ইমপ্লিমেন্টেশনে Alias অ্যাকশনে অ্যাক্সেস পাওয়ার উদ্বোধন করতে। আমি Elasticsearch aliases-এর সুবিধা এবং কীভাবে আপনি এগুলো ব্যবহার করতে পারেন সেটিও রিভিউ করব।
Elasticsearch-এ Aliases ব্যবহার করার পরিচিতি
মূলত ২৪ আগস্ট ২০১৭-এ ObjectRocket.com/blog-এ প্রকাশিত
উত্কৃষ্ট Elasticsearch হাইজিনের জন্য একটি ভাল কৌশল হলো বড় বড় ইনডেক্স এড়ানো যেগুলো অতিরিক্ত পরিমাণ ডেটা ধারণ করে। যাঁব, আপনার ডেটা একাধিক ইনডেক্সে ছড়িয়ে পড়ার পর, আপনি সম্ভবত সেগুলোতে সার্চ করার সেরা উপায় চাইবেন। সেখানে aliases কাজে আসে।
Elasticsearch-এ Aliases ঠিক সে নামের মতোই: একটি সেকেন্ডারি নাম যা একটি ইনডেক্সকে, অথবা একাধিক ইনডেক্সকে রেফার করতে ব্যবহৃত হয়, যা এমনকি কিছু ফিল্টারিং অন্তর্ভুক্ত করতে পারে আপনার প্রয়োজন মেটাতে। এই পোস্টে, আমি আপনাকে aliases ব্যবহারের কিছু কুল উপায় এবং প্রসিডিউর দিয়ে হাঁটাচ্ছি, যা আপনাকে দ্রুত এবং সহজে আপনার Object Rocket Elasticsearch ক্লাস্টারগুলির জন্য একটি Alias Curator টাস্ক সেট আপ করতে সক্ষম করে।
Aliases-র সাথে CRUD (Create, Read, Update and Delete)
আসুন aliases কীভাবে কাজ করে তার একটি সহজ উদাহরণের মাধ্যমে হাঁটে যাই। আপনি aliases লিস্ট করতে পারেন হয় _cat API ব্যবহার করে, যা প্রতিটি alias-ইন্ডেক্স অ্যাসোসিয়েশনের জন্য একটি লাইন রিটার্ন করে এবং ফিল্টারিং বা রাউটিং প্রয়োগ করা হয়েছে কিনা:
GET _cat/aliases?v alias index filter routing.index routing.search atest test1 – – – atest test2 – – – atest2 test2 * – –
অথবা, আপনি /_alias এন্ডপয়েন্ট ব্যবহার করতে পারেন সকল aliases দেখতে বা /index/_alias এন্ডপয়েন্ট ব্যবহার করে শুধু সেই ইনডেক্সের aliases দেখতে। আপনি ইনডেক্স তৈরির সময় aliases যোগ করতে পারেন একটি ইনডেক্স টেমপ্লেট বা PUT কমান্ড ব্যবহার করে:
PUT /test2 { “aliases” : { “atest” : {}, “atest2” : { “filter” : { “term” : {“user” : “objectrocket” } } } } }
তারপর, /_aliases এন্ডপয়েন্ট ব্যবহার করে পরে যোগ বা মডিফাই করতে পারেন ইনডেক্স এবং alias নির্দিষ্ট করে যোগ বা রিমুভ করার জন্য।
POST /_aliases { “actions” : [ { “add” : { “index” : “test1”, “alias” : “atest” } }, { “remove” : { “index” : “test3”, “alias” : “atest” } } ] }
সেখান থেকে, আপনি কোয়েরিতে ইনডেক্স নামের বদলে alias নাম ব্যবহার করতে পারেন। মনে রাখবেন যে আপনি শুধু একটি alias-এ ডকুমেন্ট ইনডেক্স করতে পারেন যা একটি একক ইনডেক্সকে পয়েন্ট করে। অবশ্যই aliases-র সাথে আরও গভীরতা রয়েছে যা আপনি অফিসিয়াল ডক্স থেকে পেতে পারেন, কিন্তু এটি আপনাকে aliases-র সাথে কাজ করার একটি অনুভূতি দিতে পারে।
বড় ব্যাপার কী?
এটি সব khá সিম্পল মনে হয়, এবং আপনি ইতিমধ্যে 확신 করতে পারেন, কিন্তু যদি না হন, তবে নিচে কিছু জায়গা দেওয়া হলো যেখানে aliases খুব সাহায্য করে।
নো ডাউনটাইমে রিইন্ডেক্স
Elasticsearch-এ সবচেয়ে উপযোগী ফিচারগুলোর একটি হলো Reindex API। যাঁব, রিইন্ডেক্সিং-এর পর, আপনাকে পুরনো ইনডেক্স থেকে নতুন ইনডেক্সে কাটওভার ম্যানেজ করতে হয়। Aliases আপনাকে ডাউনটাইম ছাড়া এই কাটওভার করতে সক্ষম করে। এখানে কীভাবে:
মান লইয়া যাক আপনার একটি ইনডেক্স আছে যাকে
oldIndexবলা হয় এবং আপনি এটিকেnewIndex-এ রিইন্ডেক্স করতে চান।myaliasনামে একটি alias তৈরি করুন এবং এটিকেoldIndex-এ যোগ করুন।নিশ্চিত করুন যে আপনার অ্যাপ্লিকেশন
oldIndex-এর বদলেmyalias-কে পয়েন্ট করছে।আপনার
newIndexতৈরি করুন এবংoldIndexথেকে ডেটা রিইন্ডেক্স করা শুরু করুন।newIndex-কেmyalias-এ যোগ করুন এবংoldIndexরিমুভ করুন। এটি একটি একক কমান্ডে করুন। পরিবর্তনটি আটমিক (খুব ছোট এবং আত্মনির্ভর), তাই ট্রানজিশনের সময় কোনো সমস্যা হবে না।যাচাই করুন যে আপনি আপনার প্রত্যাশা অনুযায়ী রেজাল্ট পাচ্ছেন alias-র সাথে, এবং তারপর আপনি প্রস্তুত হলে
oldIndexরিমুভ করতে পারেন।
আপনার অ্যাপ্লিকেশন থেকে রিড বা কোয়েরি করার জন্য একটি alias ব্যবহার করা ভাল অভ্যাস।
টাইম-ভিত্তিক ইনডেক্সের রেঞ্জ ধরুন
আপনি যদি Logstash® বা Beats® ব্যবহার করেন, তবে আপনি সম্ভবত something-yyyy.mm.dd নামে ইনডেক্সগুলো سے পরিচিত। এটি ডেটার কিউরেশন এবং ম্যানেজমেন্ট খুব সহজ করে দেয়। ワイル্ডকার্ড এবং ইনডেক্স লিস্ট সবসময় আপনার পছন্দ মতো নমনียশীল নয়, বিশেষ করে যখন আপনি একটি ডেট রেঞ্জ জুড়ে সার্চ করতে চান। Aliases আপনাকে এতে একটি সহজ সমাধান দেয়। ধরে নিই আপনার ডেইলি logstash ইনডেক্স রয়েছে এবং আপনি আপনার লগ ৩০ দিন ধরে রাখেন। যাঁব, আপনি নির্দিষ্ট ধরণের কোয়েরির জন্য শুধু শেষ ৭ দিন দেখতে চাইতে পারেন। Aliases এবং curator ব্যবহার করে, আপনি এটি সহজে করতে পারেন।
lastSevenDaysমত একটি alias তৈরি করুন।আপনার ইনডেক্স টেমপ্লেট সেট আপ করুন যাতে ডিফল্টভাবে নতুন alias-এ ইনডেক্স যোগ হয়।
Elasticsearch Curator ব্যবহার করে alias অ্যাকশন এবং age/pattern ফিল্টার, বা একটি বেসিক স্ক্রিপ্ট, একটি রিকারিং টাস্ক সেট আপ করুন ৭ দিনसे পুরানো ইনডেক্স রিমুভ করতে।
সেখান থেকে,
lastSevenDays-এ সকল সার্চ শুধু শেষ ৭ দিনে তৈরি হওয়া ইনডেক্সগুলোর ওপর হিট করে।
কাস্টমার উদাহরণ
আমার এক কাস্টমারের একটি ছোট উদাহরণ দিয়ে শেষ করতে চাই। এই কাস্টমারের স্লোয়নেস নিয়ে কিছু সমস্যা ছিল। কিছু রিভিউ করার পর, আমরা লক্ষ্য করলাম যে তাদের সাধারণ কোয়েরির একটি আসলে তাদের ক্লাস্টারের পুরো ডেট রেঞ্জ জুড়ে সার্চ করছিল। এই কোয়েরিটি পূর্বে বর্ণিত সিনেরিওর সাথে খুব মিলত ছিল এবং শুধু শেষ ৭ দিনের ডেটা প্রয়োজন ছিল, তাই এটি একটি alias দিয়ে ম্যানেজ করার জন্য একটি পেরফেক্ট প্রার্থী ছিল যা নিয়মিত আপডেট হয়ে শেষ ৭ দিনের ইনডেক্সগুলোর দিকে পয়েন্ট করত। নিচের গ্রাফগুলোতে, আপনি দেখতে পাবেন যে তাদের ক্লাস্টারের পারফরম্যান্সের ওপর প্রভাব চমৎকার:
যেহেতু এই alias ঘন ঘন কোয়েরি করা হতো, আমরা এই পরিবর্তনের প্রভাব দেখতে পাচ্ছি। এই গ্রাফগুলো আমাদের দেখাচ্ছে যে CPU ব্যবহার সব নোডে ৫০%-এরও বেশি কমেছে, কোয়েরি ক্যাশে ইভিকশনের সংখ্যা ~৭৫% কমেছে। আপনি যে ফলাফল দেখতে পাচ্ছেন সেটি কোয়েরি ফ্রিকোয়েন্সি এবং ইনডেক্স আকারের উপর নির্ভর করে এত ড্রাস্টিক নাও হতে পারে, কিন্তু এটি ইলাস্ট্রেট করে যে আপনার সার্চের স্কোপ এবং ইনডেক্স উপযুক্তভাবে ম্যানেজ করা কতটা গুরুত্বপূর্ণ।
রিক্যাপ
Aliases Elasticsearch টুলবক্সের এখনো একটি টুল যা আপনার ক্লাস্টার দিনের সাথে দিন ম্যানেজ ও কাজ করা সহজ করতে পারে। এই পোস্ট এক্সহাস্টিভ নয় কিন্তু আপনাকে একটি ধারণা দিতে পারে যে আপনি আপনার Elasticsearch ইমপ্লিমেন্টেশনে aliases কোথায় এবং কীভাবে ব্যবহার করতে পারেন।
ObjectRocket-এর মাধ্যমে Alias Curator টাস্ক কীভাবে সেট আপ করবেন?
আমাদের Elasticsearch ক্লাস্টারগুলো ইতিমধ্যে aliases সাপোর্ট করছে, নতুন Alias Curator টাস্ক ফিচারটি aliases-এর নিয়মিত মেইনটেন্যান্স সহজ করে তোলে আপনাকে ফিল্টার স্পেসিফাই করতে দিয়ে একটি নির্দিষ্ট ইন্টারভালে আপনার קרাইটেরিয়ার ভিত্তিতে ইনডেক্স alias-এ যোগ বা রিমুভ করতে।
এটি ইলাস্ট্রেট করতে, আসুন lastSevenDays alias উদাহরণটি নিই, যেটি ইতিমধ্যে Elasticsearch Curator ব্যবহার করে রেফারেন্স করা হয়েছে। এটিকে সহজ রাখতে, আমরা Curator টাস্কের প্রথম রানটিই Alias সেট করতে দিই। আপনি Curator টাস্কে বিদ্যমান aliases রেফারেন্স করতে পারেন, যা আপনাকে আলাদাভাবে alias সেট আপ করতে দেয় আপনি আরও কাস্টম সেটিং চাইলে।
এই alias ম্যানেজ করতে, আপনাকে এটিকে আপ-টু-ডেট রাখতে হবে শুধু সেই ইনডেক্সগুলো রাখা যেগুলো ৭ দিনের भीतर তৈরি হওয়ার age criteria মেট করে। ক্লাস্টারের ইনস্ট্যান্স ডিটেইলস পেজ থেকে শুরু করুন যেখানে আমরা Alias Curator টাস্ক যোগ করতে চাই:
এখন, Curator ট্যাব সিলেক্ট করুন বর্তমান curator টাস্কগুলো দেখতে:
আপনি দেখতে পাচ্ছেন, আমাদের ইতিমধ্যে কয়েকটি curator টাস্ক রয়েছে। আসুন আরেকটি তৈরি করি—এবারের Alias Curator টাস্ক দিয়ে। এটি করতে, Add Task সিলেক্ট করুন:
এখন, আপনি Alias টাস্ক টাইপ সিলেক্ট করতে পারেন:
আমাদের টাস্ক নাম দেওয়ার পর, আমাদের alias নাম স্পেসিফাই করতে হবে। এই উদাহরণের জন্য lastSevenDays ব্যবহার করি। আপনি কয়েকটি অপশনও দেখতে পাবেন: Add এবং Remove। এগুলো আপনাকে ইনডেক্সের ফিল্টার স্পেসিফাই করতে দেয় যেগুলো আপনি alias-এ যোগ বা রিমুভ করতে চান। lastSevenDays-এর জন্য, আমরা কিছু ইনডেক্স যোগ করব এবং কিছু রিমুভ করব। তাই, দুটোই সিলেক্ট করুন:
ইচ্ছিত ফিল্টারগুলো ৭ দিনের চেয়ে সাম্প্রতিক সব ইনডেক্স যোগ করে এবং ৭ দিনের চেয়ে পুরানো সেগুলো রিমুভ করে। আপনি সেগুলো ফিল-আপ করার পর, ইনডেক্সগুলো নিচের উদাহরণের মত দেখাবে:
আমরা ডিফল্ট ইন্টারভাল (প্রতিটি ৫ মিনিটে) রেখে দিতে পারি যাতে নির্দিষ্ট করা হয় যে আমরা এই টাস্কটিকে নিয়মিত চালাতে চাই আমাদের alias আপ-টু-ডেট রাখতে। Save Task সিলেক্ট করুন, এবং এটি হয়ে গেল! এখন টাস্কটি প্রতি ৫ মিনিটে চলে Elasticsearch Alias আপডেট রাখতে।
Rackspace DBA Services সম্পর্কে আরও জানুন।
ফিডব্যাক ট্যাব ব্যবহার করে মন্তব্য করুন বা প্রশ্ন করুন। আপনি Sales Chat-এ ক্লিক করুন এখন চ্যাট শুরু করতে এবং কথা বলতে শুরু করতে।