API tài liệu

Bạn cần làm theo các bước sau để nâng cấp Elasticsearch

Trong bất kỳ hệ thống hoặc phần mềm nào, khi chúng tôi nâng cấp lên phiên bản mới hơn, chúng tôi cần làm theo một số bước để duy trì cài đặt ứng dụng, cấu hình, dữ liệu và những thứ khác. Các bước này là bắt buộc để làm cho ứng dụng ổn định trong hệ thống mới hoặc để duy trì tính toàn vẹn của dữ liệu (ngăn dữ liệu bị hỏng).

  • Đọc tài liệu Nâng cấp từ https://www.elastic.co/
  • Kiểm tra phiên bản đã nâng cấp trong môi trường không sản xuất của bạn như trong môi trường UAT, E2E, SIT hoặc DEV.
  • Lưu ý rằng không thể khôi phục về phiên bản Elasticsearch trước đó nếu không có sao lưu dữ liệu. Do đó, nên sao lưu dữ liệu trước khi nâng cấp lên phiên bản cao hơn.
  • Chúng tôi có thể nâng cấp bằng cách sử dụng khởi động lại toàn bộ cụm hoặc nâng cấp luân phiên. Nâng cấp cuộn dành cho các phiên bản mới. Lưu ý rằng không có sự cố ngừng dịch vụ khi bạn đang sử dụng phương pháp nâng cấp luân phiên để di chuyển.

Các bước nâng cấp

  • Kiểm tra nâng cấp trong môi trường nhà phát triển trước khi nâng cấp cụm sản xuất của bạn.
  • Sao lưu dữ liệu của bạn. Bạn không thể quay trở lại phiên bản cũ hơn trừ khi bạn có ảnh chụp nhanh dữ liệu của mình.
  • Cân nhắc đóng các công việc học máy trước khi bạn bắt đầu quá trình nâng cấp. Trong khi các công việc học máy có thể tiếp tục chạy trong quá trình nâng cấp luân phiên, nó sẽ làm tăng chi phí trên cụm trong quá trình nâng cấp.
  • Nâng cấp các thành phần của Ngăn xếp đàn hồi của bạn theo thứ tự sau:
  • Elasticsearch
  • Kibana
  • Logstash
  • Nhịp đập
  • Máy chủ APM

Nâng cấp từ 6.6 trở lên

Để nâng cấp trực tiếp lên Elasticsearch 7.1.0 từ phiên bản 6.0-6.6, bạn phải lập chỉ mục lại theo cách thủ công bất kỳ chỉ số 5.x nào bạn cần để tiếp tục và thực hiện khởi động lại toàn bộ cụm.

Khởi động lại toàn bộ cụm

Quá trình khởi động lại toàn bộ cụm liên quan đến việc tắt từng nút trong cụm, nâng cấp từng nút lên 7x và sau đó khởi động lại cụm.

Sau đây là các bước cấp cao cần được thực hiện để khởi động lại toàn bộ cụm –

  • Tắt phân bổ phân đoạn
  • Dừng lập chỉ mục và thực hiện xóa đồng bộ hóa
  • Tắt tất cả các nút
  • Nâng cấp tất cả các nút
  • Nâng cấp bất kỳ plugin nào
  • Bắt đầu mỗi nút được nâng cấp
  • Chờ tất cả các nút tham gia vào cụm và báo cáo trạng thái màu vàng
  • Bật lại phân bổ

Sau khi phân bổ được bật lại, cụm bắt đầu phân bổ các phân đoạn bản sao cho các nút dữ liệu. Tại thời điểm này, có thể an toàn để tiếp tục lập chỉ mục và tìm kiếm, nhưng cụm của bạn sẽ phục hồi nhanh hơn nếu bạn có thể đợi cho đến khi tất cả các phân đoạn chính và bản sao đã được phân bổ thành công và trạng thái của tất cả các nút có màu xanh lục.

Elasticsearch – Quy ước API

Giao diện lập trình ứng dụng (API) trong web là một nhóm các lệnh gọi hàm hoặc các hướng dẫn lập trình khác để truy cập thành phần phần mềm trong ứng dụng web cụ thể đó. Ví dụ: Facebook API giúp nhà phát triển tạo ứng dụng bằng cách truy cập dữ liệu hoặc các chức năng khác từ Facebook; nó có thể là ngày sinh hoặc cập nhật trạng thái.

Elasticsearch cung cấp API REST, được JSON truy cập qua HTTP. Elasticsearch sử dụng một số quy ước mà chúng ta sẽ thảo luận ngay bây giờ.

Nhiều chỉ số

Hầu hết các hoạt động, chủ yếu là tìm kiếm và các hoạt động khác, trong API dành cho một hoặc nhiều chỉ số. Điều này giúp người dùng tìm kiếm ở nhiều nơi hoặc tất cả dữ liệu có sẵn bằng cách chỉ thực hiện truy vấn một lần. Nhiều ký hiệu khác nhau được sử dụng để thực hiện các hoạt động trong nhiều chỉ số. Chúng ta sẽ thảo luận một vài trong số chúng ở đây trong chương này.

Ký hiệu được phân tách bằng dấu phẩy

POST /index1,index2,index3/_search

Nội dung yêu cầu

{
   "query":{
      "query_string":{
         "query":"any_string"
      }
   }
}

Phản ứng

Các đối tượng JSON từ index1, index2, index3 có any_string trong đó.

_tất cả từ khóa cho tất cả các chỉ số

POST /_all/_search

Nội dung yêu cầu

{
   "query":{
      "query_string":{
         "query":"any_string"
      }
   }
}

Phản ứng

Các đối tượng JSON từ tất cả các chỉ mục và có any_string trong đó.

Các ký tự đại diện (*, +, -)

POST /school*/_search

Nội dung yêu cầu

{
   "query":{
      "query_string":{
         "query":"CBSE"
      }
   }
}

Phản ứng

Các đối tượng JSON từ tất cả các chỉ số bắt đầu với trường học có CBSE trong đó.

Ngoài ra, bạn cũng có thể sử dụng mã sau:

POST /school*,-schools_gov /_search

Nội dung yêu cầu
{
   "query":{
      "query_string":{
         "query":"CBSE"
      }
   }
}

Phản ứng

Các đối tượng JSON từ tất cả các chỉ số bắt đầu bằng “school” nhưng không phải từ school_gov và có CBSE trong đó.

Ngoài ra còn có một số tham số chuỗi truy vấn URL –

  • ignore_unavailable – Không có lỗi nào xảy ra hoặc sẽ không có hoạt động nào bị dừng, nếu một hoặc nhiều (các) chỉ mục có trong URL không tồn tại. Ví dụ, chỉ mục trường học tồn tại, nhưng hiệu sách không tồn tại.
POST /school*,book_shops/_search

Nội dung yêu cầu

{
   "query":{
      "query_string":{
         "query":"CBSE"
      }
   }
}

Nội dung yêu cầu

{
   "error":{
      "root_cause":[{
         "type":"index_not_found_exception", "reason":"no such index",
         "resource.type":"index_or_alias", "resource.id":"book_shops",
         "index":"book_shops"
      }],
      "type":"index_not_found_exception", "reason":"no such index",
      "resource.type":"index_or_alias", "resource.id":"book_shops",
      "index":"book_shops"
   },"status":404
}

Hãy xem xét đoạn mã sau:

POST /school*,book_shops/_search?ignore_unavailable = true

Nội dung yêu cầu

{
   "query":{
      "query_string":{
         "query":"CBSE"
      }
   }
}

Phản hồi (không có lỗi)

Các đối tượng JSON từ tất cả các chỉ số bắt đầu với trường học có CBSE trong đó.

allow_no_indices

giá trị true của tham số này sẽ ngăn lỗi, nếu URL có ký tự đại diện dẫn đến không có chỉ số. Ví dụ: không có chỉ mục nào bắt đầu bằng school_pri –

POST /schools_pri*/_search?allow_no_indices = true

Nội dung yêu cầu

{
   "query":{
      "match_all":{}
   }
}

Phản hồi (Không có lỗi)

{
   "took":1,"timed_out": false, "_shards":{"total":0, "successful":0, "failed":0},
   "hits":{"total":0, "max_score":0.0, "hits":[]}
}

expand_wildcards

Tham số này quyết định xem các ký tự đại diện có cần được mở rộng cho các chỉ số mở hay chỉ số đóng hay thực hiện cả hai. Giá trị của tham số này có thể mở và đóng hoặc không có và tất cả.

Ví dụ: đóng các trường chỉ mục –

POST /schools/_close

Phản ứng

{"acknowledged":true}

Hãy xem xét đoạn mã sau:

POST /school*/_search?expand_wildcards = closed

Nội dung yêu cầu

{
   "query":{
      "match_all":{}
   }
}

Phản ứng

{
   "error":{
      "root_cause":[{
         "type":"index_closed_exception", "reason":"closed", "index":"schools"
      }],
      "type":"index_closed_exception", "reason":"closed", "index":"schools"
   }, "status":403
}

Hỗ trợ toán học ngày trong tên chỉ mục

Elasticsearch cung cấp chức năng tìm kiếm các chỉ số theo ngày và giờ. Chúng ta cần chỉ định ngày và giờ theo một định dạng cụ thể. Ví dụ: accountdetail-2015.12.30, chỉ mục sẽ lưu trữ chi tiết tài khoản ngân hàng của ngày 30 tháng 12 năm 2015. Các phép toán có thể được thực hiện để lấy chi tiết cho một ngày cụ thể hoặc một phạm vi ngày và giờ. Định dạng cho tên chỉ mục toán học ngày

<static_name{date_math_expr{date_format|time_zone}}>
/<accountdetail-{now-2d{YYYY.MM.dd|utc}}>/_search

static_name là một phần của biểu thức được giữ nguyên trong mọi chỉ mục toán học ngày như chi tiết tài khoản. date_math_expr chứa biểu thức toán học xác định ngày và giờ động như now-2d. date_format chứa định dạng trong đó ngày được viết trong chỉ mục như YYYY.MM.dd. Nếu ngày hôm nay là ngày 30 tháng 12 năm 2015 thì <accountdetail- {now-2d {YYYY.MM.dd}}> sẽ trả về accountdetail-2015.12.28

Biểu hiệnGiải quyết cho
<accountdetail- {now-d}>accountdetail-2015.12.29
<accountdetail- {now-M}>accountdetail-2015.11.30
<accountdetail- {now {YYYY.MM}}>accountdetail-2015.12

Bây giờ chúng ta sẽ thấy một số tùy chọn phổ biến có sẵn trong Elasticsearch có thể được sử dụng để nhận phản hồi ở định dạng được chỉ định.

Kết quả khá

Chúng ta có thể nhận được phản hồi trong một đối tượng JSON được định dạng tốt bằng cách thêm một tham số truy vấn URL, tức là khá = true.

POST /schools/_search?pretty = true

Nội dung yêu cầu

{
   "query":{
      "match_all":{}
   }
}

Phản ứng

{
   "_index" : "schools", "_type" : "school", "_id" : "1", "_score" : 1.0,
   "_source":{
      "name":"Central School", "description":"CBSE Affiliation",
      "street":"Nagan", "city":"paprola", "state":"HP", "zip":"176115",
      "location": [31.8955385, 76.8380405], "fees":2000,
      "tags":["Senior Secondary", "beautiful campus"], "rating":"3.5"
   }
}

Đầu ra có thể đọc được của con người

Tùy chọn này có thể thay đổi các phản hồi thống kê thành dạng con người có thể đọc được (Nếu con người = true) hoặc dạng máy tính có thể đọc được (nếu con người = sai). Ví dụ: nếu human = true thì distance_kilometer = 20KM và nếu human = false thì distance_meter = 20000, khi phản hồi cần được sử dụng bởi một chương trình máy tính khác.

Lọc phản hồi

Chúng ta có thể lọc phản hồi cho ít trường hơn bằng cách thêm chúng vào tham số field_path. Ví dụ,

POST /schools/_search?filter_path = hits.total

Nội dung yêu cầu

{
   "query":{
      "match_all":{}
   }
}

Phản ứng

{"hits":{"total":3}}

Elasticsearch – API tài liệu (xem thêm)

Để lại một bình luận