Elasticsearch

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ôngPhương pháp & Mô tả
1Làm tươi() Tất cả các chỉ số trong một cụm đều được làm mới
2ensureGreen () Đảm bảo trạng thái cụm sức khỏe xanh
3ensureYellow () Đảm bảo trạng thái cụm sức khỏe màu vàng
4createIndex (tên) Tạo chỉ mục với tên được truyền cho phương thức này
5tuôn ra() Tất cả các chỉ số trong cụm đều được xóa
6flushAndRefresh () flush () và refresh ()
7indexExists (tên) Xác minh sự tồn tại của chỉ mục được chỉ định
số 8clusterService () Trả về lớp java dịch vụ cụm
9cụm () Trả về lớp của cụm kiểm tra

Phương pháp cụm kiểm tra

S.KhôngPhương pháp & Mô tả
1ensureAtLeastNumNodes (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.
2ensureAtMostNumNodes (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.
3stopRandomNode () Để dừng một nút ngẫu nhiên trong một cụm
4stopCurrentMasterNode () Để dừng nút chính
5stopRandomNonMaster () Để dừng một nút ngẫu nhiên trong một cụm không phải là nút chính.
6buildNode () Tạo một nút mới
7startNode (cài đặt) Bắt đầu một nút mới
số 8nodeSettings () 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ôngPhương pháp & Mô tả
1trì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.
2masterClient () Điều này trả về một máy khách đang giao tiếp với nút chính.
3nonMasterClient () Điều này trả về một máy khách không giao tiếp với nút chính.
4clientNodeClient () Đ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ápGiá 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.

Elasticsearch - Frozen Indices

Để 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

Elasticsearch - Frozen Indices

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.

Elasticsearch - Frozen Indices

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.

Elasticsearch - Frozen Indices

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

Elasticsearch - Frozen Indices

Elasticsearch – Lọc theo trường (xem thêm)

Trả lời