Các Lệnh Elasticsearch Phổ Biến

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

Thẻ: Elasticsearch REST_API Cluster_Health Indexing_Performance Search_Performance

Đăng vào ngày 10 tháng 6 lúc 19:25