1. Xem các phân mảnh chưa được gán
GET _cat/shards?v&h=index,shard,prirep,state,unassigned_reason&s=state:asc
2. Điều chỉnh số lượng bản sao động
PUT my_index_abc/_settings
{"number_of_replicas": 0}
3. Bật lại chiến lược phân phối phân mảnh
PUT /_cluster/settings
{
"transient": {
"cluster.routing.allocation.enable": "all"
}
}
4. Di chuyển thủ công các phân mảnh chưa được gán
POST /_cluster/reroute
{
"commands": [
{
"move": {
"index": "sample",
"shard": 0,
"from_node": "nodeA",
"to_node": "nodeB"
}
},
{
"allocate_replica": {
"index": "sample",
"shard": 1,
"node": "nodeC"
}
}
]
}
5. Kiểm tra tỷ lệ sử dụng đĩa
GET /_cat/allocation?v
6. Xem phiên bản của từng nút trong cụm
GET /_cat/nodes?v&h=host,name,version
7. Tối ưu hóa hiệu suất tìm kiếm
7.1 Thiết lập nhật ký chậm
PUT /my_index_def/_settings
{
"index.search.slowlog.threshold.query.warn": "10s",
"index.search.slowlog.threshold.query.info": "5s",
"index.search.slowlog.threshold.query.debug": "2s",
"index.search.slowlog.threshold.query.trace": "500ms",
"index.search.slowlog.threshold.fetch.warn": "1s",
"index.search.slowlog.threshold.fetch.info": "800ms",
"index.search.slowlog.threshold.fetch.debug": "500ms",
"index.search.slowlog.threshold.fetch.trace": "200ms",
"index.search.slowlog.level": "info"
}
7.2 Thiết lập mapping và routing
PUT my_index_ghi
{
"mappings": {
"_routing": {
"required": true
}
}
}
7.3 Gộp đoạn (merge)
POST /my_index_jkl/_forcemerge
8. Tối ưu hóa việc viết vào
8.1 Ghi hàng loạt
POST /_bulk
{ "index" : { "_index" : "test", "_id" : "1" } }
{ "field_x" : "value_a" }
{ "delete" : { "_index" : "test", "_id" : "2" } }
{ "create" : { "_index" : "test", "_id" : "3" } }
{ "field_y" : "value_b" }
{ "update" : {"_id" : "1", "_index" : "test"} }
{ "doc" : {"field_z" : "value_c"} }
8.2 Tăng tần suất làm mới
PUT /my_index_mno/_settings
{
"index" : {
"refresh_interval" : "30s"
}
}
8.3 Đặt số lượng bản sao thành 0 để tăng tốc độ ghi
PUT my_index_pqr/_settings
{
"number_of_replicas": 0
}
8.4 Lưu trữ translog theo cách bất đồng bộ
PUT my_index_stu/_settings
{
"index": {
"translog": {
"durability": "async"
}
}
}
9. Tối ưu hóa bộ nhớ heap
Trong file cấu hình jvm.options (không hỗ trợ điều chỉnh động, cần khởi động lại để có hiệu lực):
ES_HEAP_SIZE=TAM_NHO_DESIRE (ví dụ: "3g")
10. Giải pháp khi không đủ dung lượng ổ đĩa
Khi cụm Elasticsearch bị thiếu dung lượng ổ đĩa, sẽ ảnh hưởng đến hiệu suất.
Một số giải pháp:
- Thiết lập thêm các nút dữ liệu mới (trước tiên cần đảm bảo phân bổ phân mảnh hợp lý).
- Nâng cấp máy chủ hoặc mở rộng dung lượng ổ cứng.
- Di chuyển dữ liệu cũ sang một cụm khác hoặc lưu trữ trên thiết bị khác.
11. Thao tác di chuyển cụm
Để thực hiện di chuyển chỉ mục hoặc toàn bộ dữ liệu trong cụm, có thể sử dụng lệnh reindex hoặc các công cụ bên thứ ba như elasticdump.
12. Sao lưu và khôi phục dữ liệu cụm
Sử dụng API snapshot để tạo và khôi phục bản sao lưu cho các chỉ mục trong cụm:
PUT /_snapshot/my_backup/snapshot_xyz?wait_for_completion=true
{
"indices": "xyz_*",
"ignore_unavailable": true,
"include_global_state": false,
"metadata": {
"taken_by": "admin",
"taken_because": "backup before upgrading"
}
}
POST /_snapshot/my_backup/snapshot_xyz/_restore