0
0
Posts
Admin Team
Admin Teamtechmely

Hướng Dẫn Sử Dụng Elasticsearch CLI: Thay Đổi Documents Bằng Query (Mutations by Query)

Đăng vào 1 tuần trước

• 2 phút đọc

Chủ đề:

Elasticsearch

Elasticsearch là một công cụ mạnh mẽ không chỉ giúp bạn tìm kiếm dữ liệu mà còn cho phép thực hiện các thay đổi trực tiếp trên documents. Trong bài viết này, chúng ta sẽ tìm hiểu cách sử dụng Delete By Query APIUpdate By Query API để xóa và cập nhật hàng loạt các documents trong Elasticsearch.

Thay Đổi Documents Bằng Delete By Query API

Một trong những khía cạnh thú vị của Elasticsearch là khả năng xóa dữ liệu một cách hiệu quả bằng Delete By Query API. Ví dụ, nếu bạn muốn xóa tất cả các cuốn sách có rating thấp trong catalog và được xuất bản bởi Manning, bạn có thể gửi yêu cầu như sau:

bash Copy
$ curl -i https://localhost:9200/catalog/books/_delete_by_query?pretty -d '
{
  "query": {
    "bool": {
      "must": [
        { "range" : { "rating" : { "lt" : 3 } } }
      ],
      "filter": [
        { "term" : { "publisher" : "Manning" } }
      ]
    }
  }
}'

Và đây là kết quả trả về từ Elasticsearch:

json Copy
{
  "took" : 12,
  "timed_out" : false,
  "total" : 0,
  "deleted" : 0,
  "batches" : 0,
  "version_conflicts" : 0,
  "noops" : 0,
  "retries" : { "bulk" : 0, "search" : 0 },
  "throttled_millis" : 0,
  "requests_per_second" : -1.0,
  "throttled_until_millis" : 0,
  "failures" : []
}

Cập Nhật Documents Bằng Update By Query API

Nếu bạn muốn cập nhật các documents, bạn có thể sử dụng Update By Query API. Chẳng hạn, nếu bạn muốn tăng điểm rating của tất cả các cuốn sách do O'Reilly xuất bản thêm 1 điểm, bạn có thể thực hiện như sau:

bash Copy
$ curl -i https://localhost:9200/catalog/books/_update_by_query?pretty -d '
{
  "script": {
    "source": "ctx._source.rating += 1",
    "lang": "painless"
  },
  "query": {
    "term": { "publisher": "O'Reilly" }
  }
}'

Lưu Ý Quan Trọng

  • Delete By Query API rất hiệu quả trong việc xóa child documents khi bạn cần xóa parent document. Điều này khá hữu ích trong các tình huống phức tạp.
  • Cả Delete By Query APIUpdate By Query API đều có thể tạo ra tải lớn cho cluster, vì vậy bạn nên cân nhắc điều chỉnh tham số requests_per_second để kiểm soát tốc độ xử lý.

Với các kỹ thuật Mutations by Query, bạn có thể thực hiện thay đổi hàng loạt một cách nhanh chóng và hiệu quả mà không cần tải dữ liệu xuống trước khi chỉnh sửa! Việc tận dụng tối đa khả năng của Elasticsearch sẽ giúp bạn tối ưu hóa quy trình làm việc và quản lý dữ liệu một cách hiệu quả hơn. 🚀

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào