profile: true để bóc thời gian từng phần của query, và slow log để bắt query chậm ở production.
json
{ "profile": true, "query": { ... } }
// tra ve thoi gian tung Lucene query: build_scorer, next_doc, score...json
PUT /products/_settings
{ "index.search.slowlog.threshold.query.warn": "1s",
"index.search.slowlog.threshold.fetch.warn": "500ms" }Các nguyên nhân chậm hay gặp, theo thứ tự tần suất:
1. Điều kiện lọc nằm trong must thay vì filter — mất cache và tốn công tính điểm.
2. Deep pagination — from lớn.
3. *wildcard mở đầu bằng — phải quét toàn bộ term dictionary.
4. script trong query hoặc sort — chạy trên từng document.
5. Aggregation cardinality cao trên field nhiều giá trị khác nhau.
6. Shard quá lớn hoặc quá nhiều** — xem GET /_cat/shards?v.
Với cluster, GET /_nodes/hot_threads cho biết node đang bận vì việc gì — thường lộ ra ngay là merge, GC hay search.