Ghi được coi là thành công khi primary shard và mọi in-sync replica đều đã ghi vào translog và fsync. Nghĩa là dữ liệu đã bền trên đĩa ở nhiều node, chứ chưa chắc đã search được — cái đó phải chờ refresh.
Hai tham số điều khiển đánh đổi:
bash
PUT /orders/_doc/1?wait_for_active_shards=2 # doi it nhat 2 shard active truoc khi ghijson
PUT /orders/_settings
{ "index.translog.durability": "async" } // fsync moi 5s, nhanh hon nhung co the mat 5s cuoidurability: async tăng throughput ghi đáng kể nhưng đổi lấy rủi ro mất dữ liệu khi mất điện — chỉ hợp cho log và metric, không hợp cho dữ liệu đơn hàng.
Điểm phải nói rõ trong phỏng vấn: Elasticsearch không có transaction đa document. Bulk 1000 document mà 3 cái lỗi thì 997 cái kia vẫn được ghi. Vì thế luôn phải kiểm tra field errors và từng item trong response bulk — HTTP 200 không có nghĩa là mọi document đã vào.