Các chỉ số được tìm kiếm thường xuyên được lưu giữ trong bộ nhớ vì cần có thời gian để xây dựng lại chúng và giúp tìm kiếm hiệu quả. Mặt khác, có thể có các chỉ số mà chúng tôi hiếm khi truy cập. Các chỉ số đó không cần chiếm bộ nhớ và có thể được xây dựng lại khi cần thiết. Các chỉ số như vậy được gọi là chỉ số cố định.
Elasticsearch xây dựng cấu trúc dữ liệu tạm thời của từng phân đoạn của chỉ mục cố định mỗi khi phân đoạn đó được tìm kiếm và loại bỏ các cấu trúc dữ liệu này ngay sau khi tìm kiếm hoàn tất. Bởi vì Elasticsearch không duy trì các cấu trúc dữ liệu tạm thời này trong bộ nhớ, các chỉ số cố định tiêu thụ ít đống hơn nhiều so với các chỉ số bình thường. Điều này cho phép tỷ lệ đĩa trên heap cao hơn nhiều so với khả năng có thể.
Ví dụ về đông lạnh và không đông lạnh
Ví dụ sau đây đóng băng và mở một chỉ mục –
POST /index_name/_freeze
POST /index_name/_unfreeze
Các tìm kiếm trên các chỉ số bị đóng băng dự kiến sẽ thực thi chậm. Các chỉ số cố định không dành cho tải tìm kiếm cao. Có thể mất vài giây hoặc vài phút để hoàn thành việc tìm kiếm một chỉ mục bị cố định, ngay cả khi các tìm kiếm tương tự được hoàn thành trong mili giây khi các chỉ mục không được cố định.
Tìm kiếm Chỉ mục Đông lạnh
Số lượng chỉ số cố định được tải đồng thời trên mỗi nút bị giới hạn bởi số luồng trong nhóm luồng tìm kiếm_throttled, theo mặc định là 1. Để bao gồm các chỉ số cố định, yêu cầu tìm kiếm phải được thực hiện với tham số truy vấn – ignore_throttled = false.
GET /index_name/_search?q=user:tpoint&ignore_throttled=false
Theo dõi các chỉ số đông lạnh
Các chỉ số cố định là các chỉ số thông thường sử dụng điều chỉnh tìm kiếm và triển khai phân đoạn hiệu quả trong bộ nhớ.
GET /_cat/indices/index_name?v&h=i,sth
Elasticsearch – Testing
Thử nghiệm
Elasticsearch cung cấp một tệp jar, tệp này có thể được thêm vào bất kỳ IDE java nào và có thể được sử dụng để kiểm tra mã liên quan đến Elasticsearch. Một loạt các thử nghiệm có thể được thực hiện bằng cách sử dụng khuôn khổ do Elasticsearch cung cấp. Trong chương này, chúng ta sẽ thảo luận chi tiết về các bài kiểm tra này –
- Kiểm tra đơn vị
- Thử nghiệm hội nhập
- Thử nghiệm ngẫu nhiên
Điều kiện tiên quyết
Để bắt đầu thử nghiệm, bạn cần thêm phần phụ thuộc thử nghiệm Elasticsearch vào chương trình của mình. Bạn có thể sử dụng maven cho mục đích này và có thể thêm phần sau trong pom.xml.
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>2.1.0</version>
</dependency>
EsSetup đã được khởi tạo để bắt đầu và dừng nút Elasticsearch và cũng để tạo các chỉ mục.
EsSetup esSetup = new EsSetup();
Hàm esSetup.execute () với createIndex sẽ tạo các chỉ mục, bạn cần chỉ định cài đặt, loại và dữ liệu.
Kiểm tra đơn vị
Bài kiểm tra đơn vị được thực hiện bằng cách sử dụng khung kiểm tra JUnit và Elasticsearch. Nút và chỉ số có thể được tạo bằng cách sử dụng các lớp Elasticsearch và trong phương pháp thử nghiệm có thể được sử dụng để thực hiện thử nghiệm. Các lớp ESTestCase và ESTokenStreamTestCase được sử dụng cho thử nghiệm này.
Thử nghiệm hội nhập
Kiểm tra tích hợp sử dụng nhiều nút trong một cụm. Lớp ESIntegTestCase được sử dụng cho thử nghiệm này. Có nhiều phương pháp khác nhau giúp công việc chuẩn bị test case dễ dàng hơn.
S.Không | Phương pháp & Mô tả |
1 | Làm tươi() Tất cả các chỉ số trong một cụm đều được làm mới |
2 | ensureGreen () Đảm bảo trạng thái cụm sức khỏe xanh |
3 | ensureYellow () Đảm bảo trạng thái cụm sức khỏe màu vàng |
4 | createIndex (tên) Tạo chỉ mục với tên được truyền cho phương thức này |
5 | tuôn ra() Tất cả các chỉ số trong cụm đều được xóa |
6 | flushAndRefresh () flush () và refresh () |
7 | indexExists (tên) Xác minh sự tồn tại của chỉ mục được chỉ định |
số 8 | clusterService () Trả về lớp java dịch vụ cụm |
9 | cụm () Trả về lớp của cụm kiểm tra |
Phương pháp cụm kiểm tra
S.Không | Phương pháp & Mô tả |
1 | ensureAtLeastNumNodes (n) Đảm bảo số lượng nút tối thiểu trong một cụm nhiều hơn hoặc bằng số lượng đã chỉ định. |
2 | ensureAtMostNumNodes (n) Đảm bảo số lượng nút tối đa trong một cụm nhỏ hơn hoặc bằng số lượng đã chỉ định. |
3 | stopRandomNode () Để dừng một nút ngẫu nhiên trong một cụm |
4 | stopCurrentMasterNode () Để dừng nút chính |
5 | stopRandomNonMaster () Để dừng một nút ngẫu nhiên trong một cụm không phải là nút chính. |
6 | buildNode () Tạo một nút mới |
7 | startNode (cài đặt) Bắt đầu một nút mới |
số 8 | nodeSettings () Ghi đè phương pháp này để thay đổi cài đặt nút. |
Tiếp cận khách hàng
Một máy khách được sử dụng để truy cập các nút khác nhau trong một cụm và thực hiện một số hành động. Phương thức ESIntegTestCase.client () được sử dụng để nhận một ứng dụng khách ngẫu nhiên. Elasticsearch cũng cung cấp các phương thức khác để truy cập máy khách và những phương thức đó có thể được truy cập bằng phương thức ESIntegTestCase.internalCluster ().
S.Không | Phương pháp & Mô tả |
1 | trình lặp () Điều này giúp bạn tiếp cận tất cả các khách hàng có sẵn. |
2 | masterClient () Điều này trả về một máy khách đang giao tiếp với nút chính. |
3 | nonMasterClient () Điều này trả về một máy khách không giao tiếp với nút chính. |
4 | clientNodeClient () Điều này trả về một máy khách hiện đang ở trên nút máy khách. |
Thử nghiệm ngẫu nhiên
Thử nghiệm này được sử dụng để kiểm tra mã của người dùng với mọi dữ liệu có thể, để không có bất kỳ loại dữ liệu nào bị lỗi trong tương lai. Dữ liệu ngẫu nhiên là lựa chọn tốt nhất để thực hiện thử nghiệm này.
Tạo dữ liệu ngẫu nhiên
Trong thử nghiệm này, lớp Random được khởi tạo bởi thể hiện do RandomizedTest cung cấp và cung cấp nhiều phương pháp để lấy các loại dữ liệu khác nhau.
phương pháp | Giá trị trả lại |
getRandom () | Phiên bản của lớp ngẫu nhiên |
randomBoolean () | Boolean ngẫu nhiên |
randomByte () | Byte ngẫu nhiên |
randomShort () | Ngắn ngẫu nhiên |
randomInt () | Số nguyên ngẫu nhiên |
randomLong () | Ngẫu nhiên dài |
randomFloat () | Phao ngẫu nhiên |
randomDouble () | Đôi ngẫu nhiên |
randomLocale () | Ngôn ngữ ngẫu nhiên |
randomTimeZone () | Múi giờ ngẫu nhiên |
randomFrom () | Phần tử ngẫu nhiên từ mảng |
Khẳng định
Các lớp ElasticsearchAssertions và ElasticsearchGeoAssertions chứa các xác nhận, được sử dụng để thực hiện một số kiểm tra phổ biến tại thời điểm kiểm tra. Ví dụ, hãy quan sát đoạn mã được đưa ra ở đây
SearchResponse seearchResponse = client().prepareSearch();
assertHitCount(searchResponse, 6);
assertFirstHit(searchResponse, hasId("6"));
assertSearchHits(searchResponse, "1", "2", "3", "4",”5”,”6”);
Elasticsearch – Kibana Dashboard
Trang tổng quan Kibana là một tập hợp các hình ảnh và tìm kiếm. Bạn có thể sắp xếp, thay đổi kích thước và chỉnh sửa nội dung trang tổng quan, sau đó lưu trang tổng quan để bạn có thể chia sẻ. Trong chương này, chúng ta sẽ xem cách tạo và chỉnh sửa trang tổng quan.
Tạo trang tổng quan
Từ Trang chủ Kibana, chọn tùy chọn bảng điều khiển từ các thanh điều khiển bên trái như hình dưới đây. Điều này sẽ nhắc bạn tạo một trang tổng quan mới.
Để Thêm hình ảnh trực quan vào trang tổng quan, chúng tôi chọn menu Thêm và chọn từ các hình ảnh trực quan được tạo sẵn có sẵn. Chúng tôi đã chọn các tùy chọn hình ảnh hóa sau đây từ danh sách
Khi chọn các hình ảnh trực quan ở trên, chúng tôi nhận được bảng điều khiển như được hiển thị ở đây. Sau đó, chúng tôi có thể thêm và chỉnh sửa trang tổng quan để thay đổi các phần tử và thêm các phần tử mới.
Kiểm tra các yếu tố
Chúng tôi có thể kiểm tra các phần tử của Bảng điều khiển bằng cách chọn menu bảng điều khiển trực quan và chọn Kiểm tra . Điều này sẽ hiển thị dữ liệu đằng sau phần tử mà cũng có thể được tải xuống.
Chia sẻ trang tổng quan
Chúng ta có thể chia sẻ bảng điều khiển bằng cách chọn menu chia sẻ và chọn tùy chọn để lấy siêu liên kết như hình dưới đây