البرمجة

بحث معقد في ElasticSearch: بحث عن :Feed: واسترجاع السجلات لليوم السابق

للبحث عن تطابق دقيق للنص “:Feed:” في حقل الرسالة (message) واسترجاع جميع السجلات التي تطابق ذلك والتي تعود ليوم واحد إلى الوراء، يمكنك تعديل استعلام ElasticSearch الخاص بك على النحو التالي:

json
{ "query": { "bool": { "must": [ { "query_string": { "fields": ["message"], "query": "\\:Feed\\:" } }, { "range": { "timestamp": { "gte": "now-1d", "lte": "now" } } } ] } } }

التعديل الرئيسي هو استخدام مصفوفة (array) لـ”must” بدلاً من تقديم مفتاح “must” مرتين. هذا يضمن أن كل من الشروط (conditions) – البحث عن “:Feed:” والتحقق من نطاق التاريخ – يجب أن تكونا متحققتين لكل سجل.

المزيد من المعلومات

بالتأكيد، يمكنني توضيح المزيد من المعلومات حول استعلام ElasticSearch الخاص بك:

  1. في الاستعلام الحالي، تستخدم query_string للبحث في حقل message عن النص \:Feed\:. يتم وضع العلامات \: للتأكيد على أننا نبحث عن نص محدد وليس كلمة عابرة.
  2. ثم، تستخدم شرط range للتحقق من أن السجلات التي تم العثور عليها تقع ضمن نطاق تاريخ محدد. في هذه الحالة، يتم التحقق من أن الوقت timestamp يكون بين “now-1d” (يعني الوقت الحالي قبل يوم واحد) و “now” (الوقت الحالي).
  3. تم تصحيح الهيكل الخاص بـbool بحيث يكون لديك مصفوفة من شروط الـmust بدلاً من تقديم مفتاح must مرتين، وهذا يضمن أن تكون كل الشروط متحققة لكل سجل.

إذا كان لديك أي استفسار آخر أو تحتاج إلى مساعدة إضافية، فلا تتردد في طرحها.

زر الذهاب إلى الأعلى