Elasticsearch là một công cụ tìm kiếm toàn văn bản phân tán, lập chỉ mục và tìm kiếm là các chức năng cơ bản của Elasticsearch. Thực tế, chức năng Aggregations của Elasticsearch cũng rất mạnh mẽ, cho phép thực hiện phân tích thống kê phức tạp trên dữ liệu. Elasticsearch cung cấp bốn loại chức năng phân tích tổng hợp chính, bao gồm aggregations chỉ số (metrics aggregations), aggregations thùng (bucket aggregations), aggregations ống (pipeline aggregations) và aggregations ma trận (matrix aggregations). Aggregations ống và aggregations ma trận đang trong giai đoạn thử nghiệm theo thông báo chính thức, và sẽ được thay đổi hoàn toàn hoặc loại bỏ sau này, vì vậy chúng tôi sẽ không giải thích về aggregations ống và aggregations ma trận ở đây.
Phân tích văn bản là quá trình chuyển đổi toàn bộ văn bản thành một chuỗi các từ (term/token), còn được gọi là phân từ. Trong Elasticsearch, phân từ được thực hiện thông qua analyzer (bộ phân tích), dù là chỉ mục hay tìm kiếm, đều cần sử dụng analyzer (bộ phân tích). Bộ phân tích, chia thành bộ phân tích được xây dựng sẵn và bộ phân tích tùy chỉnh.
Clusters
Cluster trống
Nếu chúng ta khởi động một nút đơn lẻ không chứa bất kỳ dữ liệu hay chỉ mục nào, cluster của chúng ta sẽ trông như một cluster với một nút nội dung trống.
Hình 1. Cluster với nút nội dung trống
Thao tác quản lý chỉ mục
Quản lý chỉ mục Elasticsearch chủ yếu bao gồm cách tạo chỉ mục, xóa chỉ mục, cập nhật bản sao, quyền đọc ghi chỉ mục, cấu hình bí danh chỉ mục, và nhiều nội dung khác.
Xóa chỉ mục
Để xóa chỉ mục ES, bạn chỉ cần gửi một yêu cầu http delete đến giao diện http của cụm ES với chỉ mục được chỉ định, bạn có thể thực hiện điều này bằng lệnh curl, cụ thể như sau:
Chức năng tìm kiếm nổi bật (highlight) của Elasticsearch cho phép bạn lấy đoạn tóm tắt nổi bật từ một hoặc nhiều trường trong kết quả tìm kiếm, để hiển thị vị trí phù hợp với truy vấn của người dùng. Khi bạn yêu cầu tìm kiếm nổi bật, trường highlight trong kết quả trả về sẽ bao gồm các trường nổi bật và các đoạn nổi bật. Elasticsearch mặc định sẽ đánh dấu từ khóa bằng thẻ <em></em>
.
Triển khai cụm
Cấu hình triển khai ES:
5 nút (cấu hình: 8 nhân 64 G 1T), tổng cộng 320 G, 5 T.
Khoảng 10+ chỉ mục, 5 phân đoạn, lượng dữ liệu mới hàng ngày là khoảng 2G, 40 triệu bản ghi. Bản ghi được lưu trữ trong 30 ngày.
Tối ưu hóa hiệu suất
filesystem cache
Elasticsearch là một công cụ tìm kiếm và phân tích dữ liệu dựa trên Lucene, cung cấp một dịch vụ phân tán. Elasticsearch là một sản phẩm mã nguồn mở tuân thủ các điều khoản mã nguồn mở của Apache và hiện là công cụ tìm kiếm cấp doanh nghiệp phổ biến hiện nay.
Nó được sử dụng cho tìm kiếm toàn văn bản, tìm kiếm có cấu trúc, phân tích, và kết hợp ba yếu tố này:
Trong Elasticsearch, Mapping
(ánh xạ) được sử dụng để xác định cách một tài liệu cùng với các trường bên trong nó được lưu trữ và lập chỉ mục. Mapping cho phép bạn xác định trước các thuộc tính như kiểu dữ liệu của các trường, trọng số của các trường, bộ phân tích từ và các thuộc tính khác, giống như việc thiết lập các trường khi tạo bảng trong cơ sở dữ liệu quan hệ.
Elasticsearch là một công cụ tìm kiếm và phân tích dữ liệu phân tán, hỗ trợ RESTful, có khả năng giải quyết một số lượng ngày càng tăng các trường hợp sử dụng. Là trung tâm của Elastic Stack, nó lưu trữ dữ liệu của bạn tập trung để tìm kiếm nhanh chóng, tinh chỉnh độ liên quan, và phân tích mạnh mẽ có thể mở rộng dễ dàng.
Elasticsearch là công cụ tìm kiếm cấp doanh nghiệp phổ biến hiện nay, được thiết kế để hoạt động trong môi trường đám mây, có khả năng tìm kiếm thời gian thực, ổn định, đáng tin cậy, nhanh chóng và dễ dàng cài đặt. Dù là một sản phẩm sẵn sàng sử dụng ngay sau khi mở hộp, sau khi đưa vào môi trường sản xuất, chúng ta không thể đảm bảo được hiệu suất và ổn định của nó. Việc tăng cường hiệu suất dịch vụ dựa trên tình hình thực tế có rất nhiều kỹ thuật. Trong chương này, chúng tôi sẽ chia sẻ những kinh nghiệm tối ưu hóa hiệu suất Elasticsearch từ thực tiễn, chủ yếu từ các khía cạnh như tối ưu hóa cấu hình phần cứng, cài đặt tối ưu hóa chỉ mục, tối ưu hóa truy vấn, tối ưu hóa cấu trúc dữ liệu, tối ưu hóa kiến trúc cụm.