text được analyze (tách token, lowercase) để full-text search; keyword lưu nguyên chuỗi, dùng cho filter, sort và aggregation.
json
"name": {
"type": "text",
"fields": { "raw": { "type": "keyword" } }
}Đây là multi-field, pattern chuẩn: name để search, name.raw để sort và group.
Hệ quả cụ thể:
- term query trên field text với giá trị "Laptop Gaming" trả về rỗng, vì trong index chỉ có laptop và gaming.
- Sort trên field text bị từ chối, phải sort trên name.raw.
- Aggregation trên text cũng bị chặn (cần bật fielddata, và không nên bật).
Chọn theo mục đích: user gõ tự do để tìm thì text; status, SKU, tag, email, ID thì keyword — chúng không cần tách từ và luôn được dùng để lọc chính xác.