Boolean Query
1️⃣ Boolean Query কি?
OpenSearch–এ boolean query হলো কমপ্লেক্স search query যেখানে তুমি একাধিক condition combine করতে পারো।
এটা
boolkeyword দিয়ে করা হয়।Boolean query–এ প্রধান তিনটি clause আছে:
| Clause | মানে | Example Use |
|---|---|---|
| must | এই condition অবশ্যই match করতে হবে (logical AND) | “category = electronics AND price > 100” |
| should | এই condition match করলে score বাড়ে, কিন্তু match না করলেও চলে (logical OR) | “category = electronics OR category = fashion” |
| must_not | এই condition match হলে document exclude হবে (logical NOT) | “exclude status_code = CANCELLED” |
💡 Tip:
must + should একসাথে ব্যবহার করা যায়।
must_not সবসময় exclude করে।
2️⃣ Basic Boolean Query Example
ধরো আমাদের /orders index আছে। আমরা চাই:
category = "electronics"
price >= 100
status_code != "CANCELLED"
GET /orders/_search
{
"query": {
"bool": {
"must": [
{ "match": { "category": "electronics" } },
{ "range": { "price": { "gte": 100 } } }
],
"must_not": [
{ "match": { "status_code": "CANCELLED" } }
]
}
}
}
must→ দুইটা condition satisfy করতে হবেmust_not→ যদি status_code CANCELLED হয়, document exclude হবে
3️⃣ Boolean Query with should
ধরো আমরা চাই:
category = electronics OR category = fashion
price >= 50
exclude cancelled
GET /orders/_search
{
"query": {
"bool": {
"should": [
{ "match": { "category": "electronics" } },
{ "match": { "category": "fashion" } }
],
"must": [
{ "range": { "price": { "gte": 50 } } }
],
"must_not": [
{ "match": { "status_code": "CANCELLED" } }
]
}
}
}
এখানে should → OR logic
must → AND logic
must_not → NOT logic
4️⃣ Notes / Tips
যদি
shouldclause থাকে এবংmustনা থাকে → OpenSearch মনে করবে “কমপক্ষে একটি should match করতে হবে”minimum_should_matchparameter দিয়ে ঠিক করা যায় কতটাshouldcondition satisfy করতে হবে
Example:
{
"query": {
"bool": {
"should": [
{ "match": { "category": "electronics" } },
{ "match": { "category": "fashion" } }
],
"minimum_should_match": 1
}
}
}
এখানে কমপক্ষে ১টা condition match করতে হবে
✅ Boolean query হলো OpenSearch–এর সবচেয়ে গুরুত্বপূর্ণ ও শক্তিশালী query type।
তুমি AND, OR, NOT logic সহজে apply করতে পারো
Aggregation বা filter–এর সাথে মিলিয়ে complex queries বানাতে পারো