ইলাস্টিকের অনুসন্ধানের পার্থক্য অবশ্যই মুশকিল এবং শুল্ক জিজ্ঞাসা করা উচিত


168

ES MUSTএবং SHOULDবুল ক্যোয়ারির মধ্যে পার্থক্য কী ?

আমি যদি কেবলমাত্র আমার পদ ব্যবহার করে এমন ফলাফলগুলি চাই তবে আমি কি ব্যবহার করব must?

আমার কাছে একটি কোয়েরি রয়েছে যা কেবলমাত্র নির্দিষ্ট মান থাকতে পারে এবং আজকের সময় / তারিখের চেয়ে কম তারিখ / টাইমস্ট্যাম্পের কোনও ফলাফলও নেই - এখনই

এছাড়াও

আমি কি কোড বেলো পছন্দ করতে একটি ভিতরে একাধিক ফিল্টার ব্যবহার করতে পারি:

"filtered": {
"filter": {
"bool" : {
        "must" : {
            "term" : { "type" : 1 }
            "term" : { "totals" : 14 }
            "term" : { "groupId" : 3 }
            "range" : {
                "expires" : {
                    "gte": "now"
                }
            }
        },

উত্তর:


249

অবশ্যই এর অর্থ হ'ল: দফা (ক্যোয়ারী) অবশ্যই নথিগুলির সাথে মিলবে in এই ক্লজগুলি অবশ্যই লজিক্যাল এ্যান্ড এর মতো মিলবে ।

এর অর্থ হওয়া উচিত : লজিকাল ওআর এর মতো এই ক্লাসগুলির মধ্যে কমপক্ষে একটি অবশ্যই মেলাতে হবে ।

মূলত এগুলি লজিকাল অপারেটরগুলি এবং ওআর এর মতো ব্যবহৃত হয়। এই দেখুন ।

এখন একটি বুল ক্যোয়ারিতে :

অবশ্যই এর অর্থ হ'ল: দস্তাবেজ অন্তর্ভুক্ত করার জন্য অবশ্যই যে দফাগুলি মেলাতে হবে।

এর অর্থ হওয়া উচিত : যদি এই ধারাগুলি মেলে, তবে তারা বৃদ্ধি করে _score; অন্যথায়, তাদের কোনও প্রভাব নেই। এগুলি প্রতিটি নথির জন্য প্রাসঙ্গিকতার স্কোরকে আরও পরিমার্জন করতে ব্যবহৃত হয়।


হ্যাঁ আপনি ভিতরে একাধিক ফিল্টার ব্যবহার করতে পারেন must


পার্টিতে কিছুটা দেরি, তবে mustবিভাগগুলি বা মূল্য নির্ধারণের shouldজন্য এবং আকার এবং রঙের মতো বৈশিষ্ট্যের জন্য কীভাবে । এখন, যদি আকার এল এবং এক্সএল নির্বাচন করা হয় তবে এটি দুটির মধ্যে হওয়া উচিত, তবে যদি সবুজ রঙও চয়ন করা থাকে তবে এটি অবশ্যই (মাপের এল বা এক্সএল) এবং (সবুজ রঙের) হতে হবে। এটা কি সম্ভব?
মাভ

আমি বিশ্বাস করি যে ক্ষেত্রে ফিল্টারগুলি গুণাবলীর জন্য আরও ভাল পদ্ধতির হতে পারে। এগুলি নির্ভুল মিলের দিকে মনোযোগী এবং প্রাসঙ্গিকতা ভিত্তিক অনুসন্ধানগুলি নয়। দেখুন প্রশ্নের এবং ফিল্টার আরও তথ্যের জন্য দস্তাবেজে।
জিম কে।

6
আমি মনে করি minimum_number_should_match = 1"এই ক্লাসগুলির মধ্যে কমপক্ষে একটির অবশ্যই মিল থাকা উচিত" এই ধারণাটি প্রয়োগ করার জন্য আপনার থাকা দরকার ।
জিম কে।

ভাল উত্তর! আমি কেবলমাত্র ডকুমেন্টেশনের একটি অংশ ভাগ করতে চাই যা এটি বুঝতে আমার পক্ষে খুব সহায়ক হয়েছিল। elastic.co/guide/en/elasticsearch/guide/current/…
ba0708

1
জিমকে - বা কোনও শর্ত নেই use যখন কোনও আবশ্যক ধারা নেই, সর্বনিম্ন_ সংখ্যা_শাল্ড_ম্যাচ অন্তর্ভুক্ত থাকে।
LizH

15

যেহেতু এটি একটি জনপ্রিয় প্রশ্ন, তাই আমি এটিকে যুক্ত করতে চাই ইলাস্টিকের অনুসন্ধান সংস্করণে 2 জিনিস কিছুটা বদলেছে।

filteredকোয়েরির পরিবর্তে boolশীর্ষ স্তরে কোয়েরি ব্যবহার করা উচিত ।

আপনি যদি mustপার্টস স্কোর সম্পর্কে চিন্তা না করেন তবে সেই অংশগুলিকে filterকী করে রাখুন। কোনও স্কোরিং মানে দ্রুত অনুসন্ধান নয়। এছাড়াও, ইলাস্টিকসার্চগুলি স্বয়ংক্রিয়ভাবে খুঁজে বের করবে, তাদের ক্যাশে করা হবে কিনা ইত্যাদি ক্যাশে করার must_notজন্য সমানভাবে বৈধ।

তথ্যসূত্র: https://www.elastic.co/guide/en/elasticsearch/references/current/query-dsl-bool-query.html

"gte": "now"মিলিসেকেন্ড গ্রানুলারিলিটির কারণে মনও যা ক্যাশে করা যায় না। একটি mustঅনুচ্ছেদে দুটি ব্যাপ্তি ব্যবহার করুন : একটি এর সাথে now/1hঅন্যটি nowযাতে প্রথমটিকে কিছু সময়ের জন্য ক্যাশে করা যায় এবং দ্বিতীয়টি একটি ছোট ফলাফলের সেটটিতে সুনির্দিষ্ট ফিল্টারিংয়ের জন্য ত্বরান্বিত হয়।


8

ডকুমেন্টেশনে যেমন বলা হয়েছে :

অবশ্যই: দফা (ক্যোয়ারী) অবশ্যই নথিগুলির সাথে মিলবে appear

উচিত: দফা (ক্যোয়ারী) ম্যাচিং ডকুমেন্টে উপস্থিত হওয়া উচিত। অবশ্যই কোনও ক্লজ নেই এমন একটি বুলিয়ান ক্যোয়ারিতে, এক বা একাধিক ধারা অবশ্যই একটি নথির সাথে মেলে। মিলনের জন্য থাকা ন্যূনতম সংখ্যার ন্যূনতম_শাল্ড_ম্যাচ প্যারামিটার ব্যবহার করে সেট করা যেতে পারে।

অন্য কথায়, ফলাফল দ্বারা মেলানো হবে সব প্রশ্নের উপস্থাপন আবশ্যক দফা (অথবা মেলে অন্তত একটি এর উচিত ক্লজ আছে যদি কোন আবশ্যক দফা।

যেহেতু আপনি চান আপনার ফলাফলগুলি সমস্ত প্রশ্নের সন্তুষ্ট করতে পারে, আপনার অবশ্যই ব্যবহার করা উচিত


আপনি প্রকৃতপক্ষে কোনও বুলিয়ান ক্যোয়ারির মধ্যে ফিল্টার ব্যবহার করতে পারেন।


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