قبلا در مورد جستجوی ساده نوشتم. توی این مطلب میخواییم ببینیم چطور برای جستجو از عملگر های and، or و not در query استفاده کنیم. boolean query این قابلیت رو به ما میده. باهاش query های مرکب/ترکیبی مینویسیم. این پرس و جوی مرکب شامل must، filter، should و must_not میشه.
- must: برای matching یا تطابق در اسناد استفاده میشه. و روی score_ تاثیر میذاره که توی مطالب قبلی در موردش توضیح دادم. برابر با AND
- filter: برای فیلتر اسناد هست و روی score_ تاثیر نداره.
- should: مواردی رو درش قرار میدیم که میخواییم در اسناد وجود داشته باشه. برابر با OR
- must_not: برعکس must، مواردی که در این بخش تعریف میکنیم نباید در اسناد وجود داشته باشن. اینم میشه گفت یه مدل فیلتر هست و معادل عملگر NOT
POST _search
{
"query": {
"bool" : {
"must" : {
"term" : { "user" : "kimchy" }
},
"filter": {
"term" : { "tag" : "tech" }
},
"must_not" : {
"range" : {
"age" : { "gte" : 10, "lte" : 20 }
}
},
"should" : [
{ "term" : { "tag" : "wow" } },
{ "term" : { "tag" : "elasticsearch" } }
]
}
}
}
elasticsearch