When and Why we use " _bulk " in the query
🔹 _bulk কি?
👉 _bulk হলো এমন API যেটা দিয়ে একসাথে অনেকগুলো operation (insert/update/delete) করা যায়।
1️⃣ কেন _bulk ব্যবহার করা হয়?
🚀 1. Performance (সবচেয়ে বড় reason)
ধরো তুমি 1000টা data insert করছো।
❌ Without _bulk:
1000 বার API call করতে হবে 😵
✅ With _bulk:
1 বার API call 😎
👉 Result:
Faster
Less network overhead
Efficient
⚡ 2. Large Data Handling
Real-world example:
e-commerce site → 10,000 products upload
log system → প্রতি second এ হাজার হাজার log
👉 এসব ক্ষেত্রে _bulk ছাড়া practically possible না।
🔄 3. Batch Processing
CSV / Excel import
Database migration
Data sync (SQL → OpenSearch)
👉 সবসময় _bulk use করা হয়।
2️⃣ কখন _bulk ব্যবহার করবো?
✅ Use _bulk when:
অনেক data একসাথে insert করতে হবে
batch update/delete করতে হবে
data migration করতে হবে
log ingestion (real-time data stream)
❌ Use _bulk না যখন:
single document insert/update
simple testing
👉 তখন use করো:
POST index/_docImportant Best Practice 🔥
1000–5000 docs per batch → best
খুব বড় batch (10k+) দিলে memory issue হতে পারে
Always use
_bulkfor production
🔚 Final Summary
_bulk = high performance + batch operation API
👉 Simple rule:
1–2 data → normal API
100+ data → _bulk API
💡 Mentor Insight (Very Important)
OpenSearch powerful কারণ:
👉 এটা search engine + data pipeline tool
আর _bulk হলো সেই pipeline এর main engine 🔥
*** Batch Operation
🔹 1️⃣ Basic Syntax of _bulk API
POST _bulk
{ "action": { "metadata" } }
{ "data" }
{ "action": { "metadata" } }
{ "data" }
...
🔹 2️⃣ Real Example (Insert)
POST _bulk
{ "index": { "_index": "products", "_id": 1 } }
{ "name": "laptop", "price": 50000 }
{ "index": { "_index": "products", "_id": 2 } }
{ "name": "mobile", "price": 15000 }
🔹 3️⃣ Available Actions
Bulk API তে ৪টা action ব্যবহার করা যায়:
| Action | Use |
|---|---|
index | insert / replace document |
create | insert only (if id exists → error) |
update | update document |
delete | delete document |
🔹 4️⃣ Example with All Actions
POST _bulk
{ "index": { "_index": "products", "_id": 1 } }
{ "name": "laptop" }
{ "create": { "_index": "products", "_id": 2 } }
{ "name": "mobile" }
{ "update": { "_index": "products", "_id": 1 } }
{ "doc": { "price": 55000 } }
{ "delete": { "_index": "products", "_id": 2 } }
🔹 5️⃣ Important Rules ⚠️
✅ Rule 1: NDJSON format
action line
data line
action line
data line
✅ Rule 2: delete এর ক্ষেত্রে data লাগে না
{ "delete": { "_index": "products", "_id": 1 } }
✅ Rule 3: newline must be maintained
প্রতিটা JSON object আলাদা line এ থাকতে হবে
comma (,) ব্যবহার করা যাবে না
🔹 6️⃣ SQL vs OpenSearch
| SQL | OpenSearch |
|---|---|
| INSERT multiple rows | _bulk + index |
| UPDATE | _bulk + update |
| DELETE | _bulk + delete |
🔚 Final Summary
POST _bulk
{ action }
{ data }
👉 মনে রাখার shortcut:
action → data → action → data
💡 Mentor Tip
_bulk= batch operationproduction এ huge data handle করার জন্য must use
format ভুল হলে পুরো request fail হতে পারে