match analyze giá trị tìm kiếm trước khi so khớp; term so khớp nguyên văn với token trong index.
Đó là lý do term trên field text thường trả rỗng.
json
// tra ve rong: index chi co token "laptop", "gaming"
{ "term": { "name": "Laptop Gaming" } }
// khop: match analyze truoc, thanh ["laptop","gaming"]
{ "match": { "name": "Laptop Gaming" } }
// dung cach neu can chinh xac
{ "term": { "name.raw": "Laptop Gaming" } }Cách chọn: user gõ tự do thì match; lọc chính xác theo status, ID, SKU thì term trên field keyword.
Các biến thể hay dùng: match_phrase khi cần đúng thứ tự từ, multi_match khi tìm trên nhiều field, và terms khi lọc theo một danh sách giá trị.
Mẹo debug: bị rỗng thì chạy _analyze trên chính field đó với chính chuỗi đó — gần như luôn thấy ngay vấn đề.