Data Engineering
8 bài viết
Đọc theo series
Elasticsearch là search & analytics engine phân tán xây trên Apache Lucene. Bài này dựng mô hình tinh thần về search engine khác database ở chỗ nào (inverted index, chấm điểm relevance), giải thích Elastic Stack/ELK và vai trò từng thành phần, điểm qua các nhóm use case chính, và định vị Elasticsearch so với ClickHouse và full-text của RDBMS để bạn biết khi nào chọn cái gì.
Mô hình dữ liệu Elasticsearch: document JSON, index, và cảnh báo khi so sánh với RDBMS. Giải thích inverted index — nền tảng của full-text nhanh — cùng mapping (dynamic vs explicit), phân biệt cực kỳ quan trọng giữa text và keyword, multi-field, analyzer/tokenizer và reindex khi đổi schema.
Query DSL dạng JSON của Elasticsearch: match vs term, bool query, query context vs filter context, chấm điểm liên quan với BM25, phân trang sâu và highlight — qua các ví dụ tìm giao dịch ngân hàng thực tế.
Aggregations biến Elasticsearch thành công cụ phân tích: metric, bucket và pipeline aggregation, lồng aggregation nhiều tầng, vai trò của doc_values, độ chính xác của terms & cardinality (HyperLogLog), và cách Kibana dựng dashboard trên nền tảng này — qua ví dụ phân tích giao dịch ngân hàng.
Cơ chế ghi document (index/update/delete), _bulk API để nạp lô hiệu quả, và vòng đời ghi buffer→refresh→flush→merge cùng vai trò của translog cho durability. Bài cũng đi qua các đường nạp dữ liệu (Beats, Logstash, ingest pipeline, Fluentd, Kafka), thiết kế index cho dữ liệu chuỗi thời gian và cách tối ưu tốc độ nạp khối lượng lớn.
Kiến trúc cụm Elasticsearch: node và vai trò (master, data, ingest, coordinating, ML), cluster state và bầu master theo quorum để tránh split-brain. Bài đi sâu vào shard (primary/replica), routing document theo hash, cách chọn số shard tránh over-sharding, rebalancing, rồi Index Lifecycle Management (hot-warm-cold-frozen-delete), rollover, data tiers, snapshot/restore và cách đọc health xanh/vàng/đỏ cho cụm log ngân hàng giữ 13 tháng.
Tối ưu tìm kiếm (filter context để cache, tránh wildcard đầu chuỗi và script tốn kém, keyword cho lọc/agg, search_after thay deep pagination), tối ưu mapping và nạp, quản lý JVM heap và filesystem cache, giám sát cluster bằng _cat/_cluster/_nodes/slow log, và xử lý các sự cố kinh điển (heap cao, quá nhiều shard, mapping explosion, hot node). Xuyên suốt là câu chuyện điều tra một cụm log ngân hàng chậm và chuyển đỏ.
Bài tổng kết của series: ghép mọi thứ đã học thành các use case ngân hàng thực chiến. Đi qua Kibana (Discover, Visualize, Dashboard, Alerting), bốn mảng ứng dụng lớn — log & observability tập trung, SIEM/security analytics, full-text search nghiệp vụ, hỗ trợ giám sát giao dịch — cùng kiến trúc tham chiếu Beats/Logstash→ES→Kibana, bảng so sánh khi nào chọn ES vs ClickHouse vs RDBMS, và các cạm bẫy về chi phí, heap, source of truth.