FresherKỹ thuậtElasticsearch
Index, document, shard và replica trong Elasticsearch là gì?
Thử trả lời trước
Đáp án mẫu
- Document: một object JSON, đơn vị bạn index và tìm kiếm, như một sản phẩm hoặc một dòng log.
- Index: tập các document có cấu trúc tương tự và một mapping, tương tự một bảng theo nghĩa rộng.
- Shard: một lát của index, và mỗi shard là một Lucene index độc lập. Index được chia thành các primary shard, và mỗi document nằm đúng trong một shard, được chọn bằng cách băm id (routing).
- Replica: bản sao của primary shard trên node khác. Nó cho failover và thêm năng lực tìm kiếm.
PUT articles
{ "settings": { "number_of_shards": 3, "number_of_replicas": 1 } }
Lệnh này tạo 3 primary shard và 3 replica, tổng cộng 6 shard, rải trên các node. Replica không bao giờ nằm cùng node với primary của nó, nên mất một node không mất dữ liệu.
Số primary shard cố định lúc tạo (muốn đổi phải dùng split, shrink hoặc reindex), còn số replica có thể đổi bất cứ lúc nào. Nhiều shard hơn giúp rải dữ liệu và công việc song song, nhưng mỗi shard có overhead.
Primary shard chia dữ liệu, còn replica sao chép nó để an toàn và tăng khả năng đọc.
Ý chính
- Document là một object JSON lưu trong index
- Primary shard chia dữ liệu, mỗi document nằm trong một shard
- Replica sao chép primary trên node khác
- Số primary cố định, số replica điều chỉnh được
Câu hỏi nối tiếp thường gặp
- Elasticsearch quyết định shard nào chứa document như thế nào?
- Chi phí của việc có quá nhiều shard là gì?
Lỗi thường gặp
- Nghĩ rằng có thể đổi số primary shard tại chỗ
- Chạy với zero replica ở production