Elasticsearch tự đoán kiểu field khi gặp field mới. Tiện lúc thử nghiệm nhưng ở production sinh ra ba vấn đề.
1. Đoán sai kiểu và không sửa được — "1234" thành text thay vì long, "2026-01-15" thành date trong khi đó là mã đơn hàng. Kiểu field không đổi được sau khi đã có dữ liệu.
2. Mapping explosion — log ghi field động (user_123_score) làm mapping phình tới hàng nghìn field, cluster state nặng và node chậm hẳn.
3. Lỗi chỉ lộ ra lúc query, không phải lúc ghi.
Cách chặn ở production:
json
PUT /orders
{
"mappings": {
"dynamic": "strict", // field la -> reject luon
"properties": { "order_no": { "type": "keyword" } }
}
}"dynamic": "strict" trả lỗi khi gặp field lạ; "dynamic": false thì nhận nhưng không index (không search được, vẫn nằm trong _source).
Giới hạn phòng thủ nên đặt kèm: index.mapping.total_fields.limit.