Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Cơ Sở Dữ Liệu

Làm Chủ Elasticsearch Aliases: Mẹo, Lợi Ích Và Thực Hành Tốt Nhất

Trong bài viết này, tôi sẽ đi qua Elasticsearch® aliases để kỷ niệm việc truy cập hành động Alias trong triển khai Curator được lưu trữ bởi ObjectRocket. Tôi cũng xem xét lại các lợi ích của Elasticsearch aliases và cách bạn có thể sử dụng chúng.

Giới thiệu về việc sử dụng alias trong Elasticsearch

Bài viết gốc đăng tải ngày 24 tháng 8 năm 2017 tại ObjectRocket.com/blog

Làm Chủ Elasticsearch Aliases: Mẹo, Lợi Ích Và Thực Hành Tốt Nhất

Một chiến lược tốt cho vệ sinh Elasticsearch xuất sắc là tránh các index khổng lồ chứa lượng dữ liệu quá lớn. Tuy nhiên, sau khi dữ liệu của bạn đã phân tán trên nhiều index, bạn có thể muốn cách tốt nhất để tìm kiếm trên chúng. Đó là nơi aliases phát huy tác dụng.

Aliases trong Elasticsearch chính xác là những gì chúng nghe như: Một tên thứ cấp có thể được dùng để tham chiếu đến một index, hoặc nhiều index, thậm chí có thể bao gồm một số lọc để phù hợp với nhu cầu của bạn. Trong bài viết này, tôi muốn hướng dẫn bạn qua một số cách thú vị để sử dụng aliases và quy trình sử dụng tính năng của chúng tôi, cho phép bạn nhanh chóng và dễ dàng thiết lập tác vụ Alias Curator cho cluster Elasticsearch Object Rocket của bạn.

CRUD (Tạo, Đọc, Cập Nhật và Xóa) với aliases

Hãy đi qua một ví dụ đơn giản về cách aliases hoạt động. Bạn có thể liệt kê aliases bằng API _cat, trả về một dòng cho mỗi liên kết alias-index và liệu lọc hoặc routing có được áp dụng:

 GET _cat/aliases?v alias index filter routing.index routing.search atest test1 – – – atest test2 – – – atest2 test2 * – – 

Thay vào đó, bạn có thể sử dụng endpoint /_alias để xem tất cả aliases hoặc endpoint /index/_alias để chỉ xem aliases cho index đó. Bạn cũng có thể thêm aliases vào index khi tạo bằng cách sử dụng index template hoặc lệnh PUT:

 PUT /test2 { “aliases” : { “atest” : {}, “atest2” : { “filter” : { “term” : {“user” : “objectrocket” } } } } } 

Sau đó, thêm hoặc sửa đổi sau đó với endpoint /_aliases bằng cách chỉ định index và alias để thêm hoặc xóa.

 POST /_aliases { “actions” : [ { “add” : { “index” : “test1”, “alias” : “atest” } }, { “remove” : { “index” : “test3”, “alias” : “atest” } } ] } 

Từ đó, bạn có thể sử dụng tên alias thay vì tên index trong truy vấn. Hãy nhớ rằng bạn chỉ có thể index tài liệu vào alias trỏ đến một index đơn lẻ. Chắc chắn có nhiều chiều sâu hơn về aliases mà bạn có thể lấy từ tài liệu chính thức, nhưng điều này sẽ cho bạn cảm giác làm việc với aliases.

Vấn đề lớn là gì?

Tất cả có vẻ khá đơn giản, và bạn có thể đã bị thuyết phục, nhưng trong trường hợp bạn chưa, đây là một vài nơi aliases thực sự giúp ích.

Reindex không downtime

Một trong những tính năng hữu ích nhất trong Elasticsearch là API Reindex. Tuy nhiên, sau khi reindex, bạn vẫn phải quản lý việc chuyển đổi từ index cũ sang index mới. Aliases cho phép bạn thực hiện chuyển đổi này mà không có downtime. Cách thức như sau:

  1. Giả sử bạn có một index gọi là oldIndex và muốn reindex nó vào newIndex.

  2. Tạo một alias myalias và thêm nó vào oldIndex.

  3. Đảm bảo ứng dụng của bạn trỏ đến myalias thay vì oldIndex.

  4. Tạo newIndex của bạn và bắt đầu reindex dữ liệu từ oldIndex vào nó.

  5. Thêm newIndex vào myalias và xóa oldIndex. Làm điều này trong một lệnh duy nhất. Thay đổi là nguyên tử (rất nhỏ và riêng lẻ), vì vậy sẽ không có vấn đề trong quá trình chuyển đổi.

  6. Xác minh rằng bạn đang nhận được kết quả như mong đợi với alias, và sau đó bạn có thể xóa oldIndex khi sẵn sàng.

Đó là thực hành tốt để sử dụng alias cho đọc hoặc truy vấn từ ứng dụng của bạn để tránh các bước không cần thiết.

Lấy khoảng thời gian của index dựa trên thời gian

Nếu bạn đang sử dụng Logstash® hoặc Beats®, bạn có thể quen thuộc với các index được đặt tên something-yyyy.mm.dd. Điều này làm cho việc quản lý và curation dữ liệu trở nên rất dễ dàng. Wildcard và danh sách index không phải lúc nào cũng linh hoạt như bạn muốn, đặc biệt khi bạn muốn tìm kiếm trên một khoảng ngày. Aliases cung cấp cho bạn một giải pháp dễ dàng cho các trường hợp như vậy. Giả sử bạn có các index logstash hàng ngày và giữ log trong 30 ngày. Tuy nhiên, bạn có thể cần xem chỉ 7 ngày cuối cho một số loại truy vấn nhất định. Bằng cách sử dụng aliases và curator, bạn có thể làm điều này khá dễ dàng.

  1. Tạo một alias tương tự ví dụ này: lastSevenDays.

  2. Thiết lập mẫu index của bạn để thêm index vào alias mới theo mặc định.

  3. Sử dụng Elasticsearch Curator với hành động alias và bộ lọc age/pattern, hoặc một script cơ bản, thiết lập tác vụ định kỳ để xóa index cũ hơn 7 ngày.

  4. Từ đó, tất cả tìm kiếm đến lastSevenDays chỉ trích các index được tạo trong 7 ngày qua.

Ví dụ khách hàng

Tôi muốn kết thúc với một ví dụ nhỏ từ một trong khách hàng của chúng tôi. Khách hàng này gặp một số vấn đề về độ chậm. Sau khi xem xét, chúng tôi nhận thấy rằng một trong các truy vấn phổ biến của họ thực sự đang tìm kiếm trên toàn bộ phạm vi ngày của cluster. Truy vấn này rất giống với kịch bản được liệt kê trước đó và chỉ cần 7 ngày dữ liệu cuối cùng, vì vậy nó là ứng cử viên hoàn hảo để quản lý bằng một alias được cập nhật thường xuyên để trỏ đến các index từ 7 ngày qua. Trong các biểu đồ sau, bạn có thể thấy tác động đến hiệu suất cluster của họ là đáng kinh ngạc:

Làm Chủ Elasticsearch Aliases: Mẹo, Lợi Ích Và Thực Hành Tốt Nhất Làm Chủ Elasticsearch Aliases: Mẹo, Lợi Ích Và Thực Hành Tốt Nhất

Vì alias này được truy vấn thường xuyên, chúng ta có thể thấy tác động của thay đổi này. Các biểu đồ cho thấy CPU usage giảm hơn 50% trên tất cả các node, số lần evict query cache giảm ~75%. Mặc dù kết quả bạn thấy có thể không drastical như vậy, tùy thuộc vào tần suất truy vấn và kích thước index, nó minh họa tầm quan trọng của việc quản lý phạm vi tìm kiếm và index phù hợp.

Tóm tắt

Aliases là một công cụ nữa trong hộp công cụ Elasticsearch nên giúp quản lý và làm việc với cluster của bạn hàng ngày dễ dàng hơn. Bài viết này không toàn diện nhưng sẽ cho bạn ý tưởng về nơi và cách bạn có thể sử dụng aliases trong triển khai Elasticsearch của mình.

Làm thế nào bạn có thể thiết lập tác vụ Alias Curator qua ObjectRocket?

Mặc dù cluster Elasticsearch của chúng tôi đã hỗ trợ aliases, tính năng tác vụ Alias Curator mới làm cho việc thiết lập bảo trì định kỳ của aliases trở nên đơn giản bằng cách cho phép bạn chỉ định bộ lọc để thêm hoặc xóa index khỏi alias tại khoảng thời gian định kỳ dựa trên tiêu chí của bạn.

Để minh họa điều này, hãy lấy ví dụ alias lastSevenDays, đã có tham chiếu sử dụng Elasticsearch Curator. Để giữ đơn giản, chúng tôi để lần chạy đầu tiên của tác vụ Curator thiết lập Alias cho chúng ta. Bạn có thể tham chiếu aliases hiện có trong tác vụ Curator, cho phép bạn thiết lập alias riêng biệt nếu bạn muốn có cài đặt tùy chỉnh hơn.

Để quản lý alias này, bạn nên giữ nó cập nhật bằng cách chỉ có các index phù hợp với tiêu chí độ tuổi là được tạo trong 7 ngày qua. Bắt đầu từ trang chi tiết instance cho cluster chúng tôi muốn thêm tác vụ Alias Curator:

Làm Chủ Elasticsearch Aliases: Mẹo, Lợi Ích Và Thực Hành Tốt Nhất

Bây giờ, chọn tab Curator để xem các tác vụ curator hiện tại:

Làm Chủ Elasticsearch Aliases: Mẹo, Lợi Ích Và Thực Hành Tốt Nhất

Như bạn thấy, chúng tôi đã có một vài tác vụ curator. Hãy tạo thêm một — lần này với tác vụ Alias Curator. Để làm điều này, chọn Add Task:

Làm Chủ Elasticsearch Aliases: Mẹo, Lợi Ích Và Thực Hành Tốt Nhất

Bây giờ, bạn có thể chọn loại tác vụ Alias:

Làm Chủ Elasticsearch Aliases: Mẹo, Lợi Ích Và Thực Hành Tốt Nhất

Sau khi đặt tên tác vụ, chúng ta cần chỉ định tên alias. Hãy dùng lastSevenDays cho ví dụ này. Bạn cũng có thể thấy một vài tùy chọn: Add và Remove. Chúng cho phép bạn chỉ định bộ lọc cho các index bạn muốn thêm hoặc xóa khỏi alias. Cho lastSevenDays, chúng ta sẽ thêm một số index và xóa những index khác. Vì vậy, hãy chọn cả hai:

Làm Chủ Elasticsearch Aliases: Mẹo, Lợi Ích Và Thực Hành Tốt Nhất

Bộ lọc mong muốn thêm tất cả index mới hơn 7 ngày và xóa những index cũ hơn 7 ngày. Sau khi điền chúng, các index trông giống như ví dụ sau:

Làm Chủ Elasticsearch Aliases: Mẹo, Lợi Ích Và Thực Hành Tốt Nhất

Chúng ta có thể để ở khoảng thời gian mặc định (mỗi 5 phút) để chỉ định rằng chúng ta muốn tác vụ này chạy thường xuyên để giữ alias Elasticsearch cập nhật. Chọn Save Task, và xong! Bây giờ tác vụ chạy mỗi 5 phút để giữ alias Elasticsearch được cập nhật.

Tìm hiểu thêm về Dịch Vụ DBA của Rackspace.

Sử dụng tab Phản Hồi để đưa ra bình luận hoặc đặt câu hỏi. Bạn cũng có thể nhấp vào Sales Chat để trò chuyện ngay và bắt đầu cuộc hội thoại.