Bài viết mới nhất

Tổng 2272 bài
Lập trình 22/09/2026 6 phút

Mapping Elasticsearch: text hay keyword, và vì sao sort trên trường text lại báo lỗi

Mapping là schema của index Elasticsearch — và chọn sai kiểu làm hỏng truy vấn mà không báo lỗi lúc index. Bài này đo thật trên es-lab: sort trên trường text báo lỗi Fielddata is disabled, số gửi dạng chuỗi bị ES đoán thành text (mất phép toán số học), và đổi kiểu một field đã có là bất khả thi — phải reindex. Hiểu text vs keyword và mapping động vs tường minh.

Lập trình 22/09/2026 6 phút

Bulk indexing: vì sao nạp 2000 tài liệu bằng _bulk nhanh hơn 303 lần nạp từng cái

Nạp dữ liệu vào Elasticsearch từng document một là cái bẫy hiệu năng lớn nhất khi khởi tạo index. Bài này đo thật trên es-lab: nạp 2000 tài liệu từng cái mất 8,2 giây (244 docs/giây), còn _bulk một request chỉ 27ms (74.074 docs/giây) — nhanh hơn 303 lần. Và đo luôn tác động của kích thước lô: lớn hơn thì nhanh hơn nhưng giảm dần.

Lập trình 22/09/2026 6 phút

Deep paging trong Elasticsearch: vì sao from=10000 báo lỗi, và search_after cứu bạn

Phân trang kiểu from/size càng lật sâu càng đắt, và Elasticsearch chặn cứng ở from=10000 với một lỗi. Bài này đo thật trên es-lab với 500.000 bản ghi: from/size tăng từ 12ms lên 30ms khi lật sâu rồi báo lỗi ở 10.000, còn search_after nhảy tới bất kỳ vị trí nào (kể cả gần cuối) chỉ 2-14ms và không giới hạn. Khi nào dùng từng cái.

Lập trình 22/09/2026 6 phút

Shard và replica Elasticsearch: nhiều shard nạp nhanh gấp đôi, nhưng số shard là bất biến

Số shard là quyết định kiến trúc quan trọng nhất của một index Elasticsearch — và khó sửa nhất. Bài này đo thật trên es-lab: nạp 200.000 tài liệu với 1 shard mất 1.310ms, với 3 shard chỉ 674ms (ghi song song). Document được băm rải đều ~66k mỗi shard. Và trung thực về replica: trên single-node nó UNASSIGNED, cluster yellow — vì sao cần nhiều node.

Lập trình 22/09/2026 6 phút

Fuzzy và autocomplete trong Elasticsearch: gõ 'elasticsrch' vẫn ra 'elasticsearch'

Người dùng gõ sai chính tả và gõ dở chừng — hai bài toán tìm gần đúng, hai giải pháp. Bài này đo thật trên es-lab: fuzzy query với Levenshtein distance cho 'elasticsrch' (thiếu chữ) vẫn ra 'elasticsearch', và edge_ngram cho autocomplete gõ 'ela' ra gợi ý ngay trong 0ms. Kèm đánh đổi: edge_ngram index lớn hơn 5 lần nhưng tìm cực nhanh.

Lập trình 22/09/2026 6 phút

Tổng kết Elasticsearch: khi nào nên dùng, khi nào SQL là đủ — checklist cho backend

Mười một bài, mười một phép đo thật trong Docker. Bài tổng kết này nối tất cả thành một bảng số liệu và một checklist thực chiến: Elasticsearch giỏi gì (tìm toàn văn nhanh hơn LIKE, aggregation 1 triệu bản ghi trong 28ms, bulk 74k doc/giây), không giỏi gì (transaction, JOIN, đếm chính xác), và những cạm bẫy đo được cần tránh.