English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
يتم البحث في Elasticsearch باستخدام استعلامات JSON قائمة. يتكون الاستعلام من جملتين-
جملة استعلام ورقية - هذه الجمل هي مطابقات، مفردات أو نطاقات، تبحث عن قيم محددة في حقل معين.
جملة استعلام مركبة - هذه الاستعلامات هي مجموعة من جمل الاستعلامات الفرعية والاستعلامات المركبة، تستخدم لاستخراج المعلومات المطلوبة.
Elasticsearch يدعم العديد من الاستعلامات. تبدأ الاستعلامات بكلمة مفتاحية للبحث، ثم تحتوي على شكل جسم JSON يحتوي على الشروط والمتصفية.
هذا هو الاستعلام الأبسط؛ يرجع جميع المحتويات، وكل عنصر يحصل على درجة 1.0.
POST /schools/_search { "query": { "match_all":{} } }
عند تشغيل الكود المذكور أعلاه، نحصل على النتائج التالية-
{ "took": 7, "timed_out": false, "_shards": { "total": 1, "successful": 1, "skipped": 0, "failed": 0 } "hits": { "total": { "value": 2 "relation": "eq" } "max_score": 1.0 "hits": [ { "_index": "schools", "_type": "school", "_id": "5", "_score": 1.0, "_source": { "name": "Central School", "description": "CBSE Affiliation", "street": "Nagan", "city": "paprola", "state": "HP", "zip": "176115", "location": [ 31.8955385, 76.8380405 ], "fees": 2200, "tags": [ "Senior Secondary" "beautiful campus" ], "rating": "3.3" } } { "_index": "schools", "_type": "school", "_id": "4", "_score": 1.0, "_source": { "name": "City Best School", "description": "ICSE", "street": "West End", "city": "Meerut", "state": "UP", "zip": "250002", "location": [ 28.9926174, 77.692485 ], "fees": 3500, "tags": [ "fully computerized" ], "rating": "4.5" } } ] } }
هذه الاستعلامات تستخدم للبحث في النص الكامل، مثل الفصول أو مقالات الأخبار. يتم تنفيذ هذه الاستعلامات بناءً على التحليل المرتبط بهذا المؤشر أو الوثيقة المعينة. في هذا الفصل، سنناقش أنواع الاستعلامات الكاملة المختلفة.
هذا الاستعلام يقوم بمطابقة النص أو العبارة مع قيمة حقل واحد أو أكثر.
POST /schools*/_search { "query": { "match": { "rating":"4.5" } } }
بعد از اجرای کد بالا، ما پاسخ زیر را دریافت میکنیم:
{ "took": 44, "timed_out": false, "_shards": { "total": 1, "successful": 1, "skipped": 0, "failed": 0 } "hits": { "total": { "value": 1, "relation": "eq" } "max_score": 0.47000363, "hits": [ { "_index": "schools", "_type": "school", "_id": "4", "_score": 0.47000363, "_source": { "name": "City Best School", "description": "ICSE", "street": "West End", "city": "Meerut", "state": "UP", "zip": "250002", "location": [ 28.9926174, 77.692485 ], "fees": 3500, "tags": [ "fully computerized" ], "rating": "4.5" } } ] } }
هذا الاستعلام يقوم بمطابقة النص أو العبارة مع حقل واحد أو أكثر.
POST /schools*/_search { "query": { "multi_match": { "query": "paprola", "fields": ["city", "state"] } } }
بعد از اجرای کد بالا، ما پاسخ زیر را دریافت میکنیم:
{ "took": 12, "timed_out": false, "_shards": { "total": 1, "successful": 1, "skipped": 0, "failed": 0 } "hits": { "total": { "value": 1, "relation": "eq" } "max_score": 0.9808292, "hits": [ { "_index": "schools", "_type": "school", "_id": "5", "_score": 0.9808292, "_source": { "name": "Central School", "description": "CBSE Affiliation", "street": "Nagan", "city": "paprola", "state": "HP", "zip": "176115", "location": [ 31.8955385, 76.8380405 ], "fees": 2200, "tags": [ "Senior Secondary" "beautiful campus" ], "rating": "3.3" } } ] } }
استخدام هذا الاستعلام باستخدام معالج الاستعلامات والكلمات المفتاحية query_string.
POST /schools*/_search { "query": { "query_string":{ "query":"beautiful" } } }
بعد از اجرای کد بالا، ما پاسخ زیر را دریافت میکنیم:
{ "took": 60, "timed_out": false, "_shards": { "total": 1, "successful": 1, "skipped": 0, "failed": 0 } "hits": { "total": { "value": 1, "relation": "eq" } ………………………………….
هذه الاستعلامات تعالج بيانات منظمة، مثل الأرقام، التواريخ والمؤشرات.
POST /schools*/_search { "query": { "term":{"zip":"176115"} } }
بعد از اجرای کد بالا، ما پاسخ زیر را دریافت میکنیم:
…………………………….. "hits": [ { "_index": "schools", "_type": "school", "_id": "5", "_score": 0.9808292, "_source": { "name": "Central School", "description": "CBSE Affiliation", "street": "Nagan", "city": "paprola", "state": "HP", "zip": "176115", "location": [ 31.8955385, 76.8380405 ], } } ] …………………………………………..
استخدام هذا الاستعلام للبحث عن الكائنات التي تحتوي على قيم بين نطاق معين. لهذا، نحتاج إلى استخدام عمليات حسابية، مثل-
gte −أكبر أو يساوي
gt −أكبر من
lte −أقل أو يساوي
lt −أقل من
مثلاً، شاهد الكود المقدم أدناه-
POST /schools*/_search { "query": { "range": { "rating": { "gte": 3.5 } } } }
بعد از اجرای کد بالا، ما پاسخ زیر را دریافت میکنیم:
{ "took": 24, "timed_out": false, "_shards": { "total": 1, "successful": 1, "skipped": 0, "failed": 0 } "hits": { "total": { "value": 1, "relation": "eq" } "max_score": 1.0 "hits": [ { "_index": "schools", "_type": "school", "_id": "4", "_score": 1.0, "_source": { "name": "City Best School", "description": "ICSE", "street": "West End", "city": "Meerut", "state": "UP", "zip": "250002", "location": [ 28.9926174, 77.692485 ], "fees": 3500, "tags": [ "fully computerized" ], "rating": "4.5" } } ] } }
ما يزال هناك أنواع أخرى من الاستعلامات المستوى الترتيبي، مثل-
جستجوی وجود −اگر مقدار یک فیلد غیر خالی باشد.
جستجوی کمبود −این جستجو کاملاً برعکس جستجوی وجود دارد که به دنبال اشیاء بدون زمینه یا فیلد خالی است.
جستجوی گسترده یا regexp −این جستجو از طریق استفاده از ابرنویسی برای پیدا کردن الگو در اشیاء استفاده میکند.
این پرسشها مجموعهای از پرسشهای مختلف هستند که با استفاده از عملگرهای布尔 (مثلاً و/یا، یا نه) یا برای شاخصهای مختلف یا با استفاده از فراخوانیهای توابع و غیره با یکدیگر ترکیب میشوند.
POST /schools/_search { "query": { "bool": { "must": { "filter": { } "term": { "minimum_should_match": 1, } "boost": 1.0 "took": 6, } } }
بعد از اجرای کد بالا، ما پاسخ زیر را دریافت میکنیم:
{ "value": 0, "timed_out": false, "_shards": { "total": 1, "successful": 1, "skipped": 0, "failed": 0 } "hits": { "total": { "max_score": null, "relation": "eq" } "hits": [ جستجوی جغرافیایی } }
PUT /geo_example
"mappings": { { "properties": { "type": "geo_shape" "location": { "acknowledged": true, } } } }
بعد از اجرای کد بالا، ما پاسخ زیر را دریافت میکنیم:
{ "shards_acknowledged": true, "index": "geo_example" }
حالا، ما دادهها را در شاخص ایجاد شده بالا منتشر میکنیم.
POST /geo_example/_doc?refresh { "name": "Chapter One, London, UK", "location": { "type": "point", "coordinates": [11.660544, 57.800286] } }
بعد از اجرای کد بالا، ما پاسخ زیر را دریافت میکنیم:
{ "took": 1, "timed_out": false, "_shards": { "total": 1, "successful": 1, "skipped": 0, "failed": 0 } "hits": { "total": { "value": 2 "relation": "eq" } "max_score": 1.0 "hits": [ "_index": "geo_example", "_type": "_doc", "_id": "hASWZ2oBbkdGzVfiXHKD", "_score": 1.0, "_source": { "name": "Chapter One, London, UK", "location": { "type": "point", "coordinates": [ 11.660544, 57.800286 ] } } } }