ইলাস্টিক অনুসন্ধান, একাধিক সূচক বনাম একটি সূচক এবং বিভিন্ন ডেটা সেটের প্রকার?


161

আমার এমভিসি প্যাটার্ন ব্যবহার করে একটি অ্যাপ্লিকেশন তৈরি হয়েছে এবং আমি এখন এটির একাধিক মডেলকে সূচক করতে চাই, এর অর্থ প্রতিটি মডেলের একটি আলাদা ডেটা কাঠামো থাকে।

  • একাধিক মডেলের জন্য একাধিক রূপক সূচকগুলি ব্যবহার করা ভাল বা প্রতিটি মডেলের একই সূচির মধ্যে একটি প্রকার রয়েছে? আমার মনে হয় উভয় উপায়ে আলাদা আলাদা অনুসন্ধানের প্রয়োজন হবে। আমি এই নিয়েই শুরু করেছি।

  • যদি ডেটা সেটটি ছোট বা বিশাল হয় তবে উভয় ধারণার মধ্যে পারফরম্যান্স অনুযায়ী পার্থক্য রয়েছে?

কেউ যদি সেই উদ্দেশ্যে আমাকে কিছু ভাল নমুনা ডেটার জন্য সুপারিশ করতে পারে তবে আমি নিজেই দ্বিতীয় প্রশ্নটি পরীক্ষা করব।

উত্তর:


184

উভয় পদ্ধতির আলাদা আলাদা প্রভাব রয়েছে।

ধরে নিই যে আপনি ইলাস্টিকসার্কের ডিফল্ট সেটিংস ব্যবহার করছেন, প্রতিটি মডেলের জন্য 1 টি সূচক থাকা আপনার শারডের সংখ্যা উল্লেখযোগ্যভাবে বৃদ্ধি করবে কারণ 1 সূচক 5 টি শার্ড ব্যবহার করবে, 5 ডেটা মডেল 25 শার্ড ব্যবহার করবে; 1 ইনডেক্সে 5 অবজেক্ট টাইপ থাকা অবস্থায় এখনও 5 টি শারড ব্যবহার করা যাচ্ছে।

প্রতিটি ডাটা মডেলকে সূচক হিসাবে রাখার জন্য প্রভাবগুলি:

  • সূচকের মধ্যে অনুসন্ধান করার জন্য দক্ষ এবং দ্রুত, কারণ প্রতিটি সূচকে ডেটা পরিমাণ আরও কম হওয়া উচিত কারণ এটি বিভিন্ন সূচকে বিতরণ করা হয়।
  • 2 বা ততোধিক সূচক থেকে ডেটা মডেলগুলির সংমিশ্রণটি ওভারহেড উত্পন্ন করতে চলেছে, কারণ ক্যোয়ারীটি সূচকগুলিতে আরও শারদগুলিতে প্রেরণ করতে হবে, সংকলন করে ব্যবহারকারীর কাছে ফিরে পাঠাতে হবে।
  • আপনার ডেটা সেটটি যদি ছোট হয় তবে আপনার প্রতিটি অতিরিক্ত শারড তৈরি হওয়ার সাথে সাথে আরও বেশি স্টোরেজ তৈরি হবে এবং পারফরম্যান্স লাভটি প্রান্তিক হ'লে প্রস্তাবিত নয়।
  • প্রস্তাবিত যদি আপনার ডেটা সেটটি বড় হয় এবং আপনার প্রশ্নগুলি প্রক্রিয়া করতে দীর্ঘ সময় নিচ্ছে, যেহেতু ডেডিকেটেড শার্ডস আপনার নির্দিষ্ট ডেটা সঞ্চয় করে চলেছে এবং ইলাস্টিকের অনুসন্ধানের জন্য এটি প্রক্রিয়া করা আরও সহজ হবে।

প্রতিটি সূচি মডেলটির মধ্যে একটি অবজেক্টের ধরণ হিসাবে মডেল থাকার জন্য প্রভাবগুলি:

  • একটি সূচকের 5 টি শারডের মধ্যে আরও ডেটা সংরক্ষণ করা হবে যার অর্থ আপনি যখন বিভিন্ন ডেটা মডেল জুড়ে জিজ্ঞাসা করেন তখন ওভারহেডের সমস্যাগুলি কম থাকে তবে আপনার শারডের আকার উল্লেখযোগ্য পরিমাণে বড় হবে।
  • ফিল্ড করার জন্য আরও নথি রয়েছে বলে শারদগুলির মধ্যে আরও ডেটা ইলাস্টিকের অনুসন্ধানের জন্য আরও দীর্ঘ সময় নিতে চলেছে।
  • প্রস্তাবিত নয় যদি আপনি জানেন যে আপনি 1 টেরাবাইট ডেটা দিয়ে যাচ্ছেন এবং আপনি আপনার ইলাস্টিকের অনুসন্ধান ম্যাপিংয়ে বিভিন্ন সূচক বা একাধিক শারডগুলিতে আপনার ডেটা বিতরণ করছেন না।
  • ছোট ডেটা সেটগুলির জন্য প্রস্তাবিত, কারণ প্রতিটি হার্ড আপনার হার্ডওয়্যারে স্থান গ্রহণের পরে আপনি প্রান্তিক পারফরম্যান্স লাভের জন্য সঞ্চয় স্থানটি অপচয় করবেন না।

আপনি যদি জিজ্ঞাসা করছেন খুব বেশি বনাম ছোট ডেটা কি? সাধারণত এটি প্রসেসরের গতি এবং আপনার হার্ডওয়্যার র‌্যামের উপর নির্ভর করে, আপনার ম্যাপিংয়ে প্রতিটি ভেরিয়েবলের মধ্যে ইলোস্টিকের অনুসন্ধান এবং আপনার ক্যোয়ারী প্রয়োজনীয়তার জন্য যে পরিমাণ ডেটা সঞ্চয় করেন তা নির্ভর করে; আপনার প্রশ্নের মধ্যে অনেকগুলি দিক ব্যবহার করা আপনার প্রতিক্রিয়া সময়কে উল্লেখযোগ্যভাবে কমিয়ে দিচ্ছে। এর কোনও সরল উত্তর নেই এবং আপনার প্রয়োজন অনুসারে আপনাকে মাপদণ্ড করতে হবে।



5
চমৎকার উত্তরের সাথে যুক্ত করতে, আমি ES 5.2 ডক থেকে উদ্ধৃতি দিয়েছি যা ব্যাখ্যা করে যে কেন প্রচুর সংখ্যক শার্ড বজায় রাখা বাঞ্ছনীয় নয়: " By default elasticsearch rejects search requests that would query more than 1000 shards. The reason is that such large numbers of shards make the job of the coordinating node very CPU and memory intensive. It is usually a better idea to organize data in such a way that there are fewer larger shards. In case you would like to bypass this limit, which is discouraged, you can update the action.search.shard_count.limit cluster setting to a greater value."
বিস্মৃতি

49

যদিও জোনাথনের উত্তর সেই সময়ে সঠিক ছিল, বিশ্ব এগিয়ে গেছে এবং এখন মনে হচ্ছে ইলাস্টিক অনুসন্ধানের পিছনে থাকা লোকদের একাধিক ধরণের সমর্থন সমর্থন করার দীর্ঘমেয়াদী পরিকল্পনা রয়েছে:

আমরা কোথায় যেতে চাই: আমরা পিতামাতার / সন্তানের সমর্থন করার সময়ও ইলাস্টিকসার্ক থেকে প্রকারের ধারণাটি সরিয়ে দিতে চাই।

সুতরাং নতুন প্রকল্পগুলির জন্য, প্রতি সূচক অনুসারে কেবলমাত্র একক প্রকারের ব্যবহার ইলাস্টিক অনুসন্ধান 6.x এ চূড়ান্ত আপগ্রেডকে আরও সহজ করে তুলবে।


13

জনাথনের উত্তর দুর্দান্ত। আমি বিবেচনা করার জন্য আরও কয়েকটি পয়েন্ট যুক্ত করব:

  • আপনার নির্বাচন করা সমাধান অনুযায়ী শারডের সংখ্যা কাস্টমাইজ করা যায়। আপনার কাছে 15 টি প্রাথমিক শারডের সাথে একটি সূচক থাকতে পারে বা 5 টি শারডের জন্য এটি 3 সূচকে বিভক্ত করা যেতে পারে - পারফরম্যান্সের দৃষ্টিভঙ্গি পরিবর্তন হবে না (ধরে নেওয়া ডেটা সমানভাবে বিতরণ করা হবে)
  • ডেটা ব্যবহার সম্পর্কে চিন্তা করুন। অর্থাৎ। আপনি যদি ভিজ্যুয়ালাইজেশনের জন্য কিবানা ব্যবহার করেন তবে নির্দিষ্ট সূচক (এস) অন্তর্ভুক্ত / বাদ দেওয়া সহজ তবে টাইপগুলি ড্যাশবোর্ডে ফিল্টার করতে হয়
  • ডেটা রিটেনশন: অ্যাপ্লিকেশন লগ / মেট্রিক ডেটার জন্য, আপনার যদি বিভিন্ন ধারণার সময় প্রয়োজন হয় তবে বিভিন্ন সূচী ব্যবহার করুন

ধরে রাখার সময় বলতে কী বোঝায়? আপনি লাইভ ফিল্ড সময় উল্লেখ করছি? এটি প্রতি নথির ভিত্তিতে সেট করা আছে।
ক্ষিতাইজ শর্মা 21

না, এখানে ধরে রাখার সময়কালটি ডকুমেন্ট / সূচক ধরে রাখা হিসাবে বোঝানো হয় - এই ডেটা কতক্ষণ সঞ্চয় করা যায়। ডেটার গুণমান, আকার, গুরুত্বের উপর ভিত্তি করে - আমি বিভিন্ন ধরে রাখার নীতি নির্দিষ্ট করতে ব্যবহার করি। কিছু ডেটা / সূচি 7 দিন পরে মুছে ফেলা হয়, অন্যরা 6
মার্সেল ম্যাটাস

2

উপরের উত্তর দুটি দুর্দান্ত!

আমি একটি সূচকে বিভিন্ন ধরণের উদাহরণ যুক্ত করছি। মনে করুন আপনি একটি লাইব্রেরিতে বই অনুসন্ধান করার জন্য একটি অ্যাপ বিকাশ করছেন। গ্রন্থাগারের মালিককে জিজ্ঞাসা করার জন্য কয়েকটি প্রশ্ন রয়েছে,

প্রশ্নাবলী:

  1. আপনি কয়টি বইয়ের পরিকল্পনা করছেন?

  2. আপনি লাইব্রেরিতে কোন ধরণের বই সংরক্ষণ করতে যাচ্ছেন?

  3. আপনি কিভাবে বই অনুসন্ধান করতে যাচ্ছেন?

উত্তর:

  1. আমি 50 কে - 70 কে বই (প্রায়) সঞ্চয় করার পরিকল্পনা করছি

  2. আমার কাছে 15 কে -20 কে প্রযুক্তি সম্পর্কিত বই (কম্পিউটার সায়েন্স, মেকানিকাল ইঞ্জিনিয়ারিং, কেমিক্যাল ইঞ্জিনিয়ারিং ইত্যাদি), 15 কে historicalতিহাসিক বই, 10 কে মেডিক্যাল সায়েন্স বই থাকবে have 10 কে ভাষা সম্পর্কিত বই (ইংরেজি, স্প্যানিশ এবং অন্যান্য)

  3. লেখকদের প্রথম নাম, লেখকের শেষ নাম, প্রকাশের বছর, প্রকাশকের নাম অনুসন্ধান করুন। (এটি আপনাকে সূচীতে কী তথ্য সংরক্ষণ করতে হবে সে সম্পর্কে ধারণা দেয়)

উপরের উত্তরগুলি থেকে আমরা বলতে পারি যে আমাদের সূচকের স্কিমাটি কিছুটা এরকম দেখতে হবে।

// এটি উদাহরণস্বরূপ সঠিক ম্যাপিং নয় just

            "yearOfPublish":{
                "type": "integer"
            },
            "author":{
                "type": "object",
                "properties": {
                    "firstName":{
                        "type": "string"
                    },
                    "lastName":{
                        "type": "string"
                    }
                }
            },
            "publisherName":{
                "type": "string"
            }
        }

উপরেরটি অর্জনের জন্য আমরা বই নামে একটি সূচক তৈরি করতে পারি এবং বিভিন্ন ধরণের থাকতে পারি।

সূচক: বই

প্রকার: বিজ্ঞান, কলা

(অথবা আপনি আরও অনেক বই থাকলে প্রযুক্তি, চিকিৎসা বিজ্ঞান, ইতিহাস, ভাষা হিসাবে অনেক ধরণের তৈরি করতে পারেন)

এখানে লক্ষণীয় গুরুত্বপূর্ণ বিষয় হ'ল স্কিমা একই তবে ডেটা অভিন্ন নয়। এবং অন্যান্য গুরুত্বপূর্ণ বিষয়টি হ'ল আপনি যে মোট ডেটা সঞ্চয় করছেন তা।

আশা করি উপরোক্তগুলি সূচকে বিভিন্ন ধরণের জন্য যেতে সাহায্য করবে, আপনার যদি আলাদা স্কিমা থাকে তবে আপনার বিভিন্ন সূচক বিবেচনা করা উচিত। কম তথ্যের জন্য ছোট সূচক। বড় ডেটা জন্য বড় সূচক :-)

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