SIEM/Log Management Tìm hiểu về ngôn ngữ truy vấn opensearch

I. Opensearch Query domain-specific language
1. Định nghĩa

Là ngôn ngữ truy vấn cho phép tạo ra các câu truy vấn tùy biến và phức tạp, thường được sử dụng trong Search API và Dev Tool. Ngôn ngữ này rất linh động với JSON, thường phân ra hai loại là truy vấn lá và truy vấn cộng dồn. [1]

2. Loại truy vấn
2.1. Truy vấn toàn văn bản

Loại truy vấn này phân tích chuỗi truy vấn trước khi thực hiện tìm kiếm, phù hợp việc tìm kiếm dạng ngôn ngữ tự nhiên trên các trường dạng văn bản.
Đặc điểm này cho phép người dùng tìm kiếm phần muốn tìm mà không cần nhập giá trị giống hoàn toàn.

2.2. Truy vấn dựa trên từ ngữ
Dùng để tìm kiếm các tài liệu (document) chứa một từ ngữ giống hoàn toàn, như một ID hoặc một phạm vi giá trị. Đối với loại truy vấn này sẽ không tiến hành phân tích và tìm kiếm dựa trên mức độ liên quan.
Khi làm việc với dữ liệu dạng văn bản, sử dụng truy vấn trên từ ngữ cho trường hợp ánh xạ kiểu từ khóa.

2.3. Truy vấn dựa địa chỉ và truy vấn xy
Dùng để tìm kiếm các tài liệu có vị trí tìm kiếm các trường chứa điểm và hình dạng trên bản đồ hoặc mặt phẳng tọa độ.
Truy vấn địa lí hoạt động trên dữ liệu không gian địa lý, còn truy vấn xy hoạt động trên dữ liệu tọa độ hai chiều, cụ thể là tìm kiếm trên các trường tọa độ Descartes.
Truy vấn dựa địa chỉ : Tìm kiếm các tài liệu chứa các hình học không gian địa lý. Các hình học này có thể được xác định trong các trường "geo_point" hỗ trợ điểm trên bản đồ và các trường "geo_shape" hỗ trợ điểm, đường thẳng, hình tròn và đa giác.
Truy vấn xy : Tìm kiếm các tài liệu chứa các hình học trong hệ tọa độ Descartes. Các hình học này có thể được xác định trong các trường "xy_point" hỗ trợ dạng điểm và trường "xy_shape" hỗ trợ dạng điểm, đường thẳng, hình tròn và đa giác.
Các hình dạng xy và điểm xy có một trong bốn mối quan hệ không gian với hình dạng được cung cấp: INTERSECTS, DISJOINT, WITHIN hoặc CONTAINS.

2.4. Truy vấn kết nối
Tìm kiếm trên các trường lồng nhau hoặc truy xuất các tài liệu cha và con khớp với một truy vấn cụ thể. Các loại truy vấn kết nối bao gồm: `nested`, `has_child`, `has_parent` và `parent_id`.
Do tính phân tán của Opensearch, tất cả các dữ liệu được phân bổ trên các node khác nhau, vì vậy nên cung cấp các loại truy vấn trên giúp thực hiện thao tác kết nối và được tối ưu hóa để mở rộng quy mô trên nhiều node.

2.5. Truy vấn kết nối
Thực hiện tìm kiếm vị trí chính xác, cụ thể là các truy vấn cụ thể, ở cấp độ thấp, cho phép kiểm soát thứ tự và khoảng cách giữa các thuật ngữ truy vấn được chỉ định.
Thường dùng để tìm kiếm các tài liệu pháp lý và bằng sáng chế.

2.6. Truy vấn chuyên biệt
Nhóm này bao gồm tất cả các loại truy vấn khác (distance_feature, more_like_this, percolate, rank_feature, script, script_score và wrapper).
Cung cấp các chức năng nâng cao về tính điểm, lọc và tiện ích, vượt xa khả năng của các truy vấn toàn văn và truy vấn theo từ ngữ tiêu chuẩn.

II. Opensearch Dashboards Query Language
1. Định nghĩa

Là một ngôn ngữ truy vấn dạng văn bản đơn giản được sử dụng để lọc dữ liệu trong OpenSearch Dashboards. [2]

2. Các lệnh truy vấn
2.1. Tìm kiếm từ ngữ

Theo mặc định, DQL thực hiện tìm kiếm trong trường được thiết lập làm trường mặc định trên index. Nếu không có trường mặc định nào được thiết lập, DQL sẽ tìm kiếm trên tất cả các trường.
Truy vấn trên sẽ khớp với các tài liệu có chứa bất kỳ từ khóa tìm kiếm nào, bất kể thứ tự xuất hiện của chúng, mặc định DQL sẽ kết hợp các từ khóa tìm kiếm bằng toán tử "or"
Để tìm kiếm một cụm từ, đặt chuỗi đó vào dấu ngoặc kép.

2.2. Ký tự có chức năng đặc biệt
Danh sách: \, (, ), :, <, >, ", *
Ví dụ dấu "\" là dấu thoát cho các ký tự trên, để có thể bao gồm ký tự trên vào chuỗi tìm kiếm.

2.3. Trường dữ liệu và wildcard
Chỉ định tên trường cùng với chuỗi cần tìm, với cú pháp "<trường dữ liệu>: <chuỗi cần tìm>"
Có thể dùng dấu "*" cho cả trường dữ liệu với chuỗi cần tìm.

2.4. Ranges và Boolean
DQL hỗ trợ các phép so sánh bất đẳng thức số sử dụng các toán tử >, <, >= và <=.
DQL hỗ trợ các toán tử Boolean: and, or và not, không phân biệt chữ hoa chữ thường, do đó AND và and được coi là như nhau.

III. Opensearch Vega visualization
Vega và Vega-Lite là các công cụ trực quan hóa sử dụng ngôn ngữ khai báo và mã nguồn mở; bạn có thể dùng chúng để tạo các hình ảnh trực quan hóa dữ liệu tùy chỉnh từ dữ liệu OpenSearch và dữ liệu Vega. [3]

IV. Piped Processing Language
1. Định nghĩa

Là một ngôn ngữ truy vấn tập trung vào việc xử lý dữ liệu theo trình tự từng bước một, sử dụng toán tử pipe (|) để kết hợp các lệnh nhằm tìm kiếm và truy xuất dữ liệu. [4]
Phù hợp để phân tích dữ liệu quan sát, log, chỉ số và dấu vết nhờ khả năng xử lý hiệu quả các loại dữ liệu bán cấu trúc.

2. Một số điều về PPL
PPL có cú pháp:
search source=<index-name> | <command_1> | <command_2> | ... | <command_n>
Opensearch Dashboard có thể cung cấp truy vấn PLL có tương tác, hoặc có thể sử dụng trong quá trình lập trình qua _pll end point.

Tài liệu tham khảo
[1] https://docs.opensearch.org/latest/query-dsl/
[2] https://docs.opensearch.org/latest/dashboards/dql/
[3] https://docs.opensearch.org/latest/dashboards/visualize/visualize-app/vega/
[4] https://docs.opensearch.org/latest/sql-and-ppl/ppl/index/
 
Back
Top