Computer >> Máy Tính >  >> Lập trình >> Cơ sở dữ liệu

Bí danh Elasticsearch

Trong bài đăng này, tôi xem xét các bí danh của Elasticsearch® để kỷ niệm quyền truy cập vào hành động Bí danh của chúng tôi trong Curatorimplementation do ObjectRocket lưu trữ. Tôi cũng xem xét các ưu điểm của bí danh Elasticsearch và cách bạn có thể sử dụng chúng.

Giới thiệu về cách sử dụng bí danh trong Elasticsearch

Được xuất bản lần đầu vào ngày 24 tháng 8 năm 2017 tại ObjectRocket.com/blog

Bí danh Elasticsearch

Một chiến lược tốt để vệ sinh Elasticsearch tuyệt vời là tránh các chỉ số lớn chứa quá nhiều dữ liệu. Tuy nhiên, sau khi dữ liệu của bạn trải rộng trên nhiều chỉ số, bạn có thể muốn cách tốt nhất để tìm kiếm trên chúng. Đó là lý do màaliases có ích.

Bí danh trong Elasticsearch chính xác như âm thanh của chúng:Tên phụ có thể được sử dụng để chỉ một chỉ mục, hoặc nhiều chỉ số, thậm chí có thể bao gồm một số bộ lọc để phù hợp với nhu cầu của bạn. Trong bài đăng này, tôi muốn giới thiệu cho các bạn một số cách hay để sử dụng bí danh 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 nhiệm vụ Trình quản lý bí danh cho các cụm Object Rocket Elasticsearch của mình.

CRUD (Tạo, Đọc, Cập nhật và Xóa) với bí danh

Hãy xem qua một ví dụ đơn giản về cách hoạt động của bí danh. Bạn có thể liệt kê các bí danh bằng _cat API, trả về một dòng cho mỗi liên kết bí danh-chỉ mục và việc lọc hay định tuyến có được áp dụng hay không:

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

Ngoài ra, bạn có thể sử dụng /_alias điểm cuối để xem tất cả các bí danh hoặc /index/_alias endpoint để chỉ xem các cơ sở cho chỉ mục đó. Bạn cũng có thể thêm bí danh vào chỉ mục trong quá trình tạo bằng cách sử dụng mẫu chỉ mục hoặc sử dụng PUT lệnh:

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

Sau đó, thêm hoặc sửa đổi nó sau bằng /_aliases điểm cuối bằng cách chỉ định chỉ mục và bí danh để 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 bí danh thay vì tên chỉ mục trong một truy vấn. Hãy nhớ rằng bạn chỉ có thể lập chỉ mục tài liệu cho một bí danh trỏ đến một chỉ mục duy nhất. Rõ ràng là có nhiều thông tin chi tiết hơn về bí danh mà bạn lấy từ các tài liệu chính thức, nhưng điều này sẽ cho bạn cảm giác khi làm việc với bí danh.

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

Tất cả điều đó có vẻ khá đơn giản và bạn có thể đã được bán, nhưng trong trường hợp bạn chưa bán, đây là một số nơi mà bí danh thực sự hữu ích.

Lập chỉ mục mà không có thời gian chết

Một trong những tính năng hữu ích nhất trong Elasticsearch là Reindex API. Tuy nhiên, sau khi lập chỉ mục lại, bạn vẫn phải quản lý phần cắt từ chỉ mục cũ sang chỉ mục mới. Bí danh cho phép bạn thực hiện sự thay đổi này mà không cần thời gian chết. Đây là cách thực hiện:

  1. Giả sử bạn có một chỉ mục được gọi là oldIndex và muốn lập chỉ mục lại nó thành newIndex .

  2. Tạo bí danh myalias và thêm nó vào oldIndex .

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

  4. Tạo newIndex của bạn và bắt đầu lập chỉ mục lại dữ liệu từ oldIndex vào nó.

  5. Thêm newIndex tới 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 đề gì trong quá trình chuyển đổi.

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

Bạn nên sử dụng bí danh cho các lần đọc hoặc truy vấn từ ứng dụng của mình để tránh các bước không cần thiết.

Thu thập phạm vi chỉ số dựa trên thời gian

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

  1. Tạo bí danh tương tự như ví dụ này:lastSevenDays .

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

  3. Sử dụng Elasticsearch Curator với hành động bí danh và bộ lọc độ tuổi / mẫu hoặc một tập lệnh cơ bản, hãy thiết lập nhiệm vụ định kỳ để xóa các chỉ số cũ hơn bảy ngày.

  4. Từ đó, tất cả các tìm kiếm đến lastSevenDays chỉ đạt được các chỉ số đã được tạo trong bảy ngày qua.

Ví dụ về khách hàng

Tôi muốn kết thúc bằng một ví dụ nhỏ từ một trong những 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. 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 dữ liệu trong bảy ngày qua, do đó, nó là ứng cử viên hoàn hảo để quản lý bằng bí danh được cập nhật thường xuyên để trỏ đến các chỉ số trong bảy ngày qua. Trong các biểu đồ sau, bạn có thể thấy rằng tác động đến hiệu suất của cụm của chúng là đáng kinh ngạc:

Bí danh Elasticsearch Bí danh Elasticsearch

Bởi vì bí danh này thường xuyên được truy vấn, chúng tôi có thể thấy tác động của thay đổi này. Các biểu đồ này cho chúng ta thấy rằng việc sử dụng CPU đã giảm hơn 50% trên tất cả các nút, số lần loại bỏ bộ nhớ cache truy vấn giảm ~ 75%. Mặc dù kết quả bạn thấy có thể không mang tính quyết định này, tùy thuộc vào tần suất truy vấn và kích thước chỉ mục, nhưng nó cho thấy tầm quan trọng của việc quản lý phạm vi tìm kiếm của bạn và lập chỉ mục một cách thích hợp.

Tóm tắt

Bí danh là một công cụ khác trong hộp công cụ Elasticsearch sẽ giúp bạn dễ dàng quản lý và làm việc với cụm công việc hàng ngày. Bài đăng này chưa đầy đủ nhưng sẽ cung cấp cho bạn ý tưởng về vị trí và cách bạn có thể sử dụng bí danh trong Elasticsearchimplementation của mình.

Bạn có thể thiết lập nhiệm vụ Người quản lý bí danh thông qua ObjectRocket như thế nào?

Mặc dù các cụm Elasticsearch của chúng tôi đã hỗ trợ bí danh, tính năng nhiệm vụ Người quản lý bí danh mới giúp việc thiết lập bảo trì bí danh thường xuyên 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 các chỉ số khỏi bí danh theo thời gian quy định dựa trên tiêu chí của bạn.

Để minh họa điều này, hãy lấy lastSevenDays ví dụ bí danh, đã có tham chiếu bằng Elasticsearch Curator. Để đơn giản, chúng tôi để lần chạy đầu tiên của nhiệm vụ Người quản lý đặt Bí danh cho chúng tôi. Bạn có thể tham khảo các bí danh hiện có trong Curatortask, cho phép bạn thiết lập bí danh riêng nếu bạn muốn có thêm cài đặt tùy chỉnh.

Để quản lý bí danh này, bạn nên cập nhật bí danh này bằng cách chỉ có các chỉ số phù hợp với tiêu chí độ tuổi được tạo trong bảy ngày qua. Bắt đầu tại trang chi tiết phiên bản cho cụm mà chúng tôi muốn thêm nhiệm vụ Người quản lý bí danh cho:

Bí danh Elasticsearch

Bây giờ, hãy chọn Người quản lý để xem các tác vụ hiện tại của người quản lý:

Bí danh Elasticsearch

Như bạn có thể thấy, chúng tôi đã có một số nhiệm vụ của người quản lý. Hãy tạo một công việc khác — lần này với nhiệm vụ Người quản lý bí danh. Để chấm điều này, hãy chọn Thêm tác vụ :

Bí danh Elasticsearch

Bây giờ, bạn có thể chọn Bí danh loại nhiệm vụ:

Bí danh Elasticsearch

Sau khi đặt tên cho nhiệm vụ của mình, chúng ta cần chỉ định tên bí danh. Hãy sử dụng lastSevenDays cho ví dụ này. Bạn cũng có thể thấy nhiều tùy chọn: Thêm Xóa . Những điều này cho phép bạn chỉ định bộ lọc cho các chỉ số bạn muốn thêm hoặc xóa khỏi bí danh. Đối với lastSevenDays , chúng tôi sẽ thêm một số chỉ số và xóa các chỉ số khác. Vì vậy, hãy chọn cả hai:

Bí danh Elasticsearch

Các bộ lọc mong muốn thêm tất cả các chỉ số gần đây hơn bảy ngày và xóa những chỉ số cũ hơn bảy ngày. Sau khi bạn điền chúng vào, các chỉ số trông tương tự như ví dụ sau:

Bí danh Elasticsearch

Chúng tôi có thể để nó ở khoảng thời gian mặc định (năm phút một lần) để chỉ định rằng chúng tôi muốn tác vụ này chạy thường xuyên để cập nhật bí danh của bạn. Chọn Lưu tác vụ và thế là xong! Bây giờ, nhiệm vụ sẽ chạy năm phút một lần để giữ cho ElasticsearchAlias ​​được cập nhật.

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

Sử dụng tab Phản hồi để đưa ra bất kỳ nhận xét hoặc đặt câu hỏi nào. Bạn cũng có thể nhấp vào Trò chuyện bán hàng để trò chuyện ngay bây giờ và bắt đầu cuộc trò chuyện.