Cấu hình Node (Node Configuration)
Cấu hình node cho phép tùy chỉnh và tối ưu hóa cài đặt cho từng node trong cluster. Nó được chia thành các phần sau:
- Cấu hình chung (Common configuration): Thuộc tính cấp cao được chia sẻ
- Cấu hình Storage: Được định nghĩa trong phần
storage - Cấu hình Metastore: Được định nghĩa trong phần
metastore - Cấu hình Ingest: Được định nghĩa trong phần
ingest_api - Cấu hình Indexer: Được định nghĩa trong phần
indexer - Cấu hình Searcher: Được định nghĩa trong phần
searcher - Cấu hình Jaeger: Được định nghĩa trong phần
jaeger
File cấu hình mẫu có thể được tìm thấy tại: quickwit.yaml.
Cấu hình chung (Common Configuration)
| Thuộc tính | Mô tả | Biến môi trường | Giá trị mặc định |
|---|---|---|---|
version | Phiên bản file cấu hình. 0.7 là giá trị duy nhất khả dụng và tương thích ngược với phiên bản 0.5 và 0.4. | ||
cluster_id | Định danh duy nhất của cluster mà node sẽ tham gia. Các cluster chia sẻ cùng mạng nên sử dụng cluster ID khác nhau. | QW_CLUSTER_ID | quickwit-default-cluster |
node_id | Định danh duy nhất của node. Phải khác với định danh của các node khác trong cluster. Nếu không được đặt, mặc định là tên host ngắn của instance. | QW_NODE_ID | Tên host ngắn |
enabled_services | Các dịch vụ được kích hoạt (control plane, indexer, janitor, metastore, searcher) | QW_ENABLED_SERVICES | Tất cả dịch vụ |
listen_address | Địa chỉ IP hoặc tên host mà Quickwit sẽ liên kết để khởi động máy chủ REST và gRPC, đồng thời kết nối node này với các node khác. Mặc định là 127.0.0.1 (localhost). Khi cố gắng hình thành cluster, giá trị mặc định này không có hiệu lực. | QW_LISTEN_ADDRESS | 127.0.0.1 |
advertise_address | Địa chỉ IP được quảng bá bởi node, tức là địa chỉ mà các node peer sử dụng để kết nối với node này cho các cuộc gọi thủ tục từ xa. | QW_ADVERTISE_ADDRESS | listen_address |
gossip_listen_port | Cổng lắng nghe dịch vụ thành viên cluster Gossip (UDP). | QW_GOSSIP_LISTEN_PORT | rest.listen_port |
grpc_listen_port | Cổng mà dịch vụ gRPC lắng nghe lưu lượng. | QW_GRPC_LISTEN_PORT | rest.listen_port + 1 |
peer_seeds | Danh sách địa chỉ IP hoặc tên host dùng để khởi tạo cluster và khám phá toàn bộ tập hợp node. Danh sách này có thể chứa địa chỉ của node hiện tại và không cần phải đầy đủ. Nếu peer_seeds chứa tên host, Quickwit sẽ phân giải nó bằng cách truy vấn DNS mỗi phút. | QW_PEER_SEEDS | |
data_dir | Đường dẫn thư mục để lưu trữ dữ liệu liên tục (dữ liệu tạm thời, slice dùng để cache). Chủ yếu được sử dụng cho các hoạt động lập chỉ mục. | QW_DATA_DIR | ./qwdata |
metastore_uri | URI metastore. Có thể là thư mục cục bộ hoặc s3://my-bucket/indexes hoặc postgres://username:password@localhost:5432/metastore. | QW_METASTORE_URI | {data_dir}/indexes |
default_index_root_uri | URI gốc index mặc định xác định vị trí lưu trữ dữ liệu index (splits). URI index được xây dựng theo mẫu: {default_index_root_uri}/{index-id} | QW_DEFAULT_INDEX_ROOT_URI | {data_dir}/indexes |
| Chỉ biến môi trường | Cấp độ log của Quickwit. Có thể là cấp độ log trực tiếp hoặc danh sách module_name=level cách nhau bằng dấu phẩy. | RUST_LOG | info |
Cấu hình REST (REST Configuration)
Phần này chứa các tùy chọn cấu hình cho REST API.
| Thuộc tính | Mô tả | Biến môi trường | Giá trị mặc định |
|---|---|---|---|
listen_port | Cổng mà REST API lắng nghe lưu lượng HTTP. | QW_REST_LISTEN_PORT | 7280 |
cors_allow_origins | Cấu hình nguồn gốc CORS được phép truy cập API. | ||
extra_headers | Danh sách tên header và giá trị |
Cấu hình CORS (Configuring CORS)
CORS (Cross-Origin Resource Sharing) mô tả địa chỉ hoặc nguồn gốc nào có thể truy cập REST API từ trình duyệt. Theo mặc định, không cho phép chia sẻ tài nguyên giữa các nguồn gốc.
Có thể chỉ định ký tự đại diện, một nguồn gốc hoặc nhiều nguồn gốc trong tham số cors_allow_origins:
rest:
listen_port: 1789
extra_headers:
x-header-1: header-value-1
x-header-2: header-value-2
cors_allow_origins: '*'
Cấu hình gRPC (gRPC Configuration)
Phần này chứa các tùy chọn cấu hình cho dịch vụ gRPC và máy khách được sử dụng cho giao tiếp nội bộ giữa các node.
| Thuộc tính | Mô tả | Biến môi trường | Giá trị mặc định |
|---|---|---|---|
max_message_size | Kích thước tối đa (byte) của thông báo được trao đổi giữa máy khách và dịch vụ gRPC nội bộ. | 20 MiB |
Ví dụ cấu hình gRPC:
grpc:
max_message_size: 30 MiB
Chúng tôi khuyên bạn chỉ nên thay đổi giá trị mặc định 20 MiB khi gặp lỗi: Error, message length too large: found 24732228 bytes, the limit is: 20971520 bytes. Trong trường hợp này, hãy tăng dần max_message_size, mỗi lần 10 MiB, cho đến khi sự cố biến mất.
Cấu hình Storage (Storage Configuration)
Tham khảo trang Cấu hình Storage chuyên dụng để biết thêm thông tin về cách cấu hình Quickwit cho các nhà cung cấp storage khác nhau.
Dưới đây là các ví dụ tối thiểu về cách cấu hình Quickwit với Amazon S3 hoặc Alibaba OSS:
Amazon S3
storage:
s3:
region: us-east-1
Alibaba
storage:
s3:
region: us-east-1
endpoint: https://oss-us-east-1.aliyuncs.com
Cấu hình Metastore (Metastore Configuration)
Phần này có thể chứa một phần con cấu hình cho mỗi implementation metastore khả dụng. Các tham số cấu hình cụ thể cho từng implementation có thể khác nhau. Currently available metastore implementations include:
- File-backed
- PostgreSQL
Cấu hình File-backed Metastore
File-backed metastore không có cấu hình cấp node. Bạn có thể cấu hình khoảng thời gian polling ở cấp index.
Cấu hình PostgreSQL Metastore
| Thuộc tính | Mô tả | Giá trị mặc định |
|---|---|---|
min_connections | Số kết nối tối thiểu luôn được duy trì trong pool. | 0 |
max_connections | Số kết nối tối đa được duy trì trong pool. | 10 |
acquire_connection_timeout | Thời gian tối đa chờ kết nối khả dụng trước khi từ bỏ truy vấn. | 10s |
idle_connection_timeout | Thời gian nhàn rỗi tối đa trước khi đóng một kết nối. | 10min |
max_connection_lifetime | Vòng đời tối đa của một kết nối. | 30min |
Ví dụ cấu hình PostgreSQL metastore ở định dạng YAML:
metastore:
postgres:
min_connections: 10
max_connections: 50
acquire_connection_timeout: 30s
idle_connection_timeout: 1h
max_connection_lifetime: 1d
Cấu hình Indexer (Indexer Configuration)
Phần này chứa các tùy chọn cấu hình cho indexer. Split store được mô tả chi tiết trong Indexing documents.
| Thuộc tính | Mô tả | Giá trị mặc định |
|---|---|---|
split_store_max_num_bytes | Số byte tối đa được phép trong split store. | 100G |
split_store_max_num_splits | Số lượng split tối đa được phép trong split store. | 1000 |
max_concurrent_split_uploads | Số lượng upload split đồng thời tối đa được phép trên một node. | 12 |
merge_concurrency | Số lượng thao tác merge tối đa có thể thực hiện đồng thời trên một node. | (2 x số luồng khả dụng) / 3 |
enable_otlp_endpoint | Nếu true, kích hoạt endpoint xuất OpenTelemetry để nhận log và traces qua OpenTelemetry Protocol (OTLP). | false |
cpu_capacity | Tham số tư vấn được sử dụng bởi control plane. Giá trị có thể được biểu thị bằng luồng (ví dụ: 2) hoặc millicpus (ví dụ: 2000m). Control plane sẽ cố gắng lên lịch các indexing pipeline theo tỷ lệ trên các node khác nhau dựa trên dung lượng CPU được khai báo. | Số luồng khả dụng |
Ví dụ:
indexer:
split_store_max_num_bytes: 100G
split_store_max_num_splits: 1000
max_concurrent_split_uploads: 12
enable_otlp_endpoint: true
Cấu hình Ingest API (Ingest API Configuration)
| Thuộc tính | Mô tả | Giá trị mặc định |
|---|---|---|
max_queue_memory_usage | Kích thước tối đa (byte) của hàng đợi Ingest trong bộ nhớ. | 2GiB |
max_queue_disk_usage | Dung lượng đĩa tối đa (byte) mà hàng đợi Ingest có thể chiếm. Kích thước tối thiểu ít nhất là 256M và ít nhất là max_queue_memory_usage. | 4GiB |
Ví dụ:
ingest_api:
max_queue_memory_usage: 2GiB
max_queue_disk_usage: 4GiB
Cấu hình Searcher (Searcher Configuration)
Phần này chứa các tùy chọn cấu hình cho searcher.
| Thuộc tính | Mô tả | Giá trị mặc định |
|---|---|---|
aggregation_memory_limit | Kiểm soát lượng bộ nhớ tối đa có thể sử dụng trước giai đoạn tổng hợp. Giới hạn này áp dụng cho mỗi yêu cầu và mỗi truy vấn leaf. | 500M |
aggregation_bucket_limit | Xác định số lượng bucket tối đa được trả về cho máy khách. | 65000 |
fast_field_cache_capacity | Dung lượng cache bộ nhớ fast field trên searcher. | 1G |
split_footer_cache_capacity | Dung lượng cache bộ nhớ split footer trên searcher (về cơ bản là hot cache). | 500M |
partial_request_cache_capacity | Dung lượng cache bộ nhớ yêu cầu một phần trên searcher. | 64M |
max_num_concurrent_split_searches | Số lượng yêu cầu tìm kiếm split đồng thời tối đa chạy trên searcher. | 100 |
max_num_concurrent_split_streams | Số lượng yêu cầu stream split đồng thời tối đa chạy trên searcher. | 100 |
split_cache | Các tùy chọn cấu hình cache split của searcher được định nghĩa bên dưới. Nếu không được chỉ định, cache sẽ bị vô hiệu hóa. |
Cấu hình Split Cache Searcher (Searcher Split Cache Configuration)
Phần này chứa các tùy chọn cấu hình cho split cache trên đĩa của searcher.
| Thuộc tính | Mô tả | Giá trị mặc định |
|---|---|---|
max_num_bytes | Kích thước đĩa tối đa được phép trong split cache. | |
max_num_splits | Số lượng split tối đa được phép trong split cache. | 10000 |
num_concurrent_downloads | Số lượng tải xuống split đồng thời tối đa. | 1 |
Ví dụ:
searcher:
fast_field_cache_capacity: 1G
split_footer_cache_capacity: 500M
partial_request_cache_capacity: 64M
split_cache:
max_num_bytes: 1G
max_num_splits: 10000
num_concurrent_downloads: 1
Cấu hình Jaeger (Jaeger Configuration)
| Thuộc tính | Mô tả | Giá trị mặc định |
|---|---|---|
enable_endpoint | Nếu true, kích hoạt endpoint gRPC cho phép dịch vụ truy vấn Jaeger kết nối và truy xuất traces. | false |
Ví dụ:
searcher:
enable_endpoint: true
Sử dụng biến môi trường trong cấu hình (Using Environment Variables in Configuration)
Bạn có thể sử dụng tham chiếu biến môi trường trong tệp cấu hình để đặt các giá trị cần được cấu hình trong quá trình triển khai. Để làm điều này, hãy sử dụng:
${VAR_NAME}
Mỗi tham chiếu biến sẽ được thay thế bằng giá trị của biến môi trường khi khởi động. Việc thay thế có phân biệt chữ hoa chữ thường và xảy ra trước khi phân tích cú pháp tệp cấu hình. Tham chiếu đến một biến chưa được xác định sẽ báo lỗi, trừ khi bạn chỉ định giá trị mặc định hoặc văn bản lỗi tùy chỉnh.
Để chỉ định giá trị mặc định, hãy sử dụng:
${VAR_NAME:-default_value}
<config_field>: ${VAR_NAME}
hoặc
<config_field>: ${VAR_NAME:-default value}
Ví dụ:
export QW_LISTEN_ADDRESS=0.0.0.0
# config.yaml
version: 0.7
cluster_id: quickwit-cluster
node_id: my-unique-node-id
listen_address: ${QW_LISTEN_ADDRESS}
rest:
listen_port: ${QW_LISTEN_PORT:-1111}
Sẽ được Quickwit hiểu là:
version: 0.7
cluster_id: quickwit-cluster
node_id: my-unique-node-id
listen_address: 0.0.0.0
rest:
listen_port: 1111
Cấu hình Storage (Storage Configuration)
Các nhà cung cấp Storage được hỗ trợ (Supported Storage Providers)
Quickwit hiện hỗ trợ bốn loại nhà cung cấp storage:
- Amazon S3 và S3-compatible (Garage, MinIO, v.v.)
- Azure Blob Storage
- Local file storage
- Google Cloud Storage (native API)
URI Storage (Storage URIs)
URI storage xác định các nhà cung cấp storage khác nhau thông qua "giao thức" hoặc "scheme" của URI. Quickwit hỗ trợ các giao thức URI storage sau:
s3://cho Amazon S3 và S3-compatibleazure://cho Azure Blob Storagefile://cho hệ thống tệp cục bộgs://cho Google Cloud Storage
URI Storage tệp cục bộ (Local File Storage URIs)
Quickwit diễn giải các đường dẫn tệp thông thường dưới dạng URI hệ thống tệp cục bộ. Cho phép sử dụng đường dẫn tệp tương đối, chúng sẽ được phân giải tương ứng với thư mục làm việc hiện tại (CWD). Có thể sử dụng ~ như một phím tắt để tham chiếu đến thư mục home của người dùng. Dưới đây là các URI hệ thống tệp cục bộ hợp lệ:
- /var/quickwit
- file:///var/quickwit
- /home/quickwit/data
- ~/data
- ./quickwit
Cấu hình Storage (Storage Configuration)
Phần này chứa một phần con cấu hình cho mỗi nhà cung cấp storage. Nếu không đặt tham số cấu hình storage một cách rõ ràng, Quickwit dựa vào các giá trị mặc định do SDK của nhà cung cấp storage cung cấp.
Cấu hình Storage S3 (S3 Storage Configuration)
| Thuộc tính | Mô tả | Giá trị mặc định |
|---|---|---|
flavor | Flavor storage tùy chọn. Các flavor có sẵn bao gồm digital_ocean, garage, gcs và minio. | |
access_key_id | AWS access key ID. | |
secret_access_key | AWS secret access key. | |
region | Vùng AWS nơi gửi yêu cầu. | us-east-1 (mặc định SDK) |
endpoint | Endpoint tùy chỉnh được sử dụng với nhà cung cấp S3-compatible. | Mặc định SDK |
force_path_style_access | Vô hiệu hóa các yêu cầu kiểu virtual-hosted. Một số nhà cung cấp S3-compatible (Ceph, MinIO) yêu cầu sử dụng. | false |
disable_multi_object_delete | Vô hiệu hóa các yêu cầu xóa nhiều đối tượng. Một số nhà cung cấp S3-compatible (GCS) yêu cầu sử dụng. | false |
disable_multipart_upload | Vô hiệu hóa tải lên đa phần. Một số nhà cung cấp S3-compatible (GCS) yêu cầu sử dụng. | false |
Việc mã hóa cứng thông tin xác thực trong tệp cấu hình là không an toàn và không được khuyến khích.
Biến môi trường (Environment Variables)
| Biến môi trường | Mô tả |
|---|---|
QW_S3_ENDPOINT | Endpoint S3 tùy chỉnh. |
QW_S3_MAX_CONCURRENCY | Giới hạn số lượng yêu cầu đồng thời đến S3. |
Storage Flavors
Storage flavors đảm bảo Quickwit hoạt động chính xác với các nhà cung cấp storage khác với S3 API bằng cách tự động cấu hình các cài đặt thích hợp. Các flavor có sẵn bao gồm:
digital_oceangaragegcsminio
Ví dụ cấu hình storage cho Google Cloud Storage ở định dạng YAML:
storage:
s3:
flavor: gcs
region: us-east1
endpoint: https://storage.googleapis.com
Cấu hình Storage Azure (Azure Storage Configuration)
| Thuộc tính | Mô tả | Giá trị mặc định |
|---|---|---|
account | Tên tài khoản Azure Storage. | |
access_key | Khóa truy cập tài khoản Azure Storage. |
Biến môi trường (Environment Variables)
| Biến môi trường | Mô tả |
|---|---|
QW_AZURE_STORAGE_ACCOUNT | Tên tài khoản Azure Blob Storage. |
QW_AZURE_STORAGE_ACCESS_KEY | Khóa truy cập tài khoản Azure Blob Storage. |
Ví dụ cấu hình storage cho Azure ở định dạng YAML:
storage:
azure:
account: your-azure-account-name
access_key: your-azure-access-key
Ví dụ cấu hình Storage cho các nhà cung cấp object storage khác nhau
Garage
storage:
s3:
flavor: garage
endpoint: http://127.0.0.1:3900
MinIO
storage:
s3:
flavor: minio
endpoint: http://127.0.0.1:9000
Cấu hình Index (Index Configuration)
Trang này mô tả cách cấu hình một index.
Ngoài index_id, cấu hình index cho phép bạn xác định năm mục:
- index-uri: Xác định vị trí lưu trữ các tệp index.
- Doc mapping: Xác định cách một tài liệu và các trường của nó được lưu trữ và lập chỉ mục cho một index nhất định.
- Index settings: Xác định trường timestamp cho phân đoạn và một số tham số nâng cao hơn như merge strategy.
- Search settings: Xác định trường tìm kiếm mặc định
default_search_fields. - Retention policy: Xác định khoảng thời gian Quickwit nên giữ lại dữ liệu đã được lập chỉ mục.
Cấu hình được đặt khi tạo index và có thể được thay đổi bằng update endpoint hoặc CLI.
Định dạng tệp Cấu hình (Config File Format)
Định dạng cấu hình index là YAML. Khi một khóa bị thiếu trong tệp cấu hình, giá trị mặc định sẽ được sử dụng. Dưới đây là một ví dụ đầy đủ áp dụng cho tập dữ liệu log HDFS:
version: 0.7
index_id: "hdfs"
index_uri: "s3://my-bucket/hdfs"
doc_mapping:
mode: lenient
field_mappings:
- name: timestamp
type: datetime
input_formats:
- unix_timestamp
output_format: unix_timestamp_secs
fast_precision: seconds
fast: true
- name: severity_text
type: text
tokenizer: raw
fast:
- tokenizer: lowercase
- name: body
type: text
tokenizer: default
record: position
- name: resource
type: object
field_mappings:
- name: service
type: text
tokenizer: raw
tag_fields: ["resource.service"]
timestamp_field: timestamp
index_field_presence: true
search_settings:
default_search_fields: [severity_text, body]
retention:
period: 90 days
schedule: daily
ID Index (Index ID)
ID Index là một chuỗi dùng để xác định duy nhất index trong metastore. Nó chỉ có thể chứa các chữ cái ASCII hoa hoặc thường, số, dấu gạch ngang (-) và dấu gạch dưới (_). Nó phải bắt đầu bằng một chữ cái và chứa ít nhất 3 ký tự nhưng không quá 255 ký tự.
URI Index (Index URI)
URI Index xác định vị trí lưu trữ các tệp index (còn được gọi là split). Tham số này mong đợi một storage URI.
Tham số index-uri là tùy chọn.
Theo mặc định, index-uri được tính bằng cách nối index-id với default_index_root_uri được xác định trong cấu hình Quickwit.
Doc Mapping (Doc Mapping)
Doc mapping xác định cách một tài liệu và các trường của nó được lưu trữ và lập chỉ mục cho một index nhất định. Một tài liệu là một tập hợp các trường có tên, mỗi trường có kiểu dữ liệu riêng (text, byte, datetime, bool, i64, u64, f64, IP, JSON).
| Biến | Mô tả | Giá trị mặc định |
|---|---|---|
field_mappings | Tập hợp các field mapping, mỗi mapping có kiểu dữ liệu riêng. | [] |
mode | Xác định cách Quickwit xử lý các trường tài liệu không có trong field_mappings. | dynamic |
dynamic_mapping | Chỉ được phép khi mode được đặt thành dynamic. Xác định xem các trường được ánh xạ động có nên được lập chỉ mục, lưu trữ, v.v. | |
tag_fields | Tập hợp các trường đã được xác định trong field_mappings sẽ được lưu trữ dưới dạng một phần của metadata tags. | [] |
store_source | Tài liệu JSON gốc có được lưu trữ trong index hay không. | false |
timestamp_field | Trường datetime được sử dụng để phân đoạn tài liệu. Trường này phải thuộc loại datetime. | None |
partition_key | Nếu được đặt, Quickwit sẽ định tuyến tài liệu đến các split khác nhau dựa trên tên trường được khai báo là partition_key. | null |
max_num_partitions | Giới hạn số lượng split được tạo thông qua phân vùng. | 200 |
index_field_presence | Tự động kích hoạt truy vấn exists cho fast fields. | false |
Kiểu trường (Field Types)
Mỗi trường có một kiểu cho biết loại dữ liệu mà nó chứa. Quickwit hỗ trợ các kiểu nguyên thủy sau: text, i64, u64, f64, datetime, bool, ip, bytes và json, cũng như các kiểu tổng hợp như array và object.
Kiểu Text (Text Type)
Trường này là trường văn bản, được phân tích và chia thành các token trước khi lập chỉ mục. Loại trường này phù hợp cho tìm kiếm toàn văn.
Tham số trường Text:
| Biến | Mô tả | Giá trị mặc định |
|---|---|---|
description | Mô tả tùy chọn của trường. | None |
stored | Giá trị có được lưu trữ trong document store không. | true |
indexed | Giá trị có nên được lập chỉ mục để có thể tìm kiếm không. | true |
tokenizer | Tên của Tokenizer. | default |
record | Mô tả lượng thông tin của index, có thể chọn basic, freq và position. | basic |
fieldnorms | Có lưu trữ field norm cho trường hay không. | false |
fast | Giá trị có được lưu trữ trong fast field không. | false |
Mô tả các Tokenizer có sẵn:
| Tokenizer | Mô tả |
|---|---|
raw | Không xử lý cũng không tokenize văn bản. Lọc các token lớn hơn 255 byte. |
raw_lowercase | Không tokenize văn bản, nhưng chuyển đổi nó thành chữ thường. Lọc các token lớn hơn 255 byte. |
default | Phân tách văn bản dựa trên khoảng trắng và dấu câu, loại bỏ các token quá dài và chuyển đổi thành chữ thường. |
en_stem | Tương tự như default, nhưng cũng áp dụng stemming cho các token kết quả. |
whitespace | Chỉ phân tách văn bản dựa trên khoảng trắng. |
chinese_compatible | Ngoài các thao tác do default thực hiện, còn phân tách giữa các ký tự CJK. |
lowercase | Áp dụng chuyển đổi chữ thường cho văn bản. Nó không tokenize văn bản. |
Mô tả các Normalizer có sẵn:
| Normalizer | Mô tả |
|---|---|
raw | Không xử lý cũng không tokenize văn bản. Lọc các token lớn hơn 255 byte. |
lowercase | Áp dụng chuyển đổi chữ thường cho văn bản. Lọc các token lớn hơn 255 byte. |
Mô tả các Record Options:
| Record Option | Mô tả |
|---|---|
basic | Chỉ ghi lại DocId. |
freq | Ghi lại ID tài liệu và tần số thuật ngữ. |
position | Ghi lại ID tài liệu, tần số thuật ngữ và vị trí xuất hiện. |
Kiểu Numeric: i64, u64 và f64 (Numeric Types: i64, u64 and f64)
Quickwit hỗ trợ ba kiểu numeric: i64, u64 và f64.
Ví dụ field mapping cho u64:
name: rating
description: Score between 0 and 5
type: u64
stored: true
indexed: true
fast: true
Tham số trường Numeric (i64, u64 và f64):
| Biến | Mô tả | Giá trị mặc định |
|---|---|---|
description | Mô tả tùy chọn của trường. | None |
stored | Giá trị trường có được lưu trữ trong document store không. | true |
indexed | Giá trị trường có được lập chỉ mục không. | true |
fast | Giá trị trường có được lưu trữ trong fast field không. | false |
coerce | Có chuyển đổi số được truyền dưới dạng chuỗi thành integer hoặc float không. | true |
output_format | Kiểu JSON được sử dụng để trả về số trong kết quả tìm kiếm. Các giá trị khả dụng là number hoặc string. | number |
Kiểu Datetime (Datetime Type)
Kiểu datetime xử lý ngày và datetime. Các loại đầu vào được hỗ trợ bao gồm:
- Float hoặc integer đại diện cho Unix timestamp
- Chuỗi chứa ngày, datetime hoặc Unix timestamp đã được định dạng
Tham số trường input_formats chỉ định các định dạng ngày được chấp nhận. Các định dạng đầu vào sau được hỗ trợ gốc:
iso8601rfc2822rfc3339strptimeunix_timestamp
Ví dụ field mapping cho datetime:
name: timestamp
type: datetime
description: Time at which the event was emitted
input_formats:
- rfc3339
- unix_timestamp
- "%Y %m %d %H:%M:%S.%f %z"
output_format: unix_timestamp_secs
stored: true
indexed: true
fast: true
fast_precision: milliseconds
Tham số trường Datetime:
| Biến | Mô tả | Giá trị mặc định |
|---|---|---|
input_formats | Định dạng để phân tích cú pháp ngày đầu vào. | \[rfc3339, unix_timestamp\] |
output_format | Định dạng để hiển thị ngày trong kết quả tìm kiếm. | rfc3339 |
stored | Giá trị trường có được lưu trữ trong document store không. | true |
indexed | Giá trị trường có được lập chỉ mục không. | true |
fast | Giá trị trường có được lưu trữ trong fast field không. | false |
fast_precision | Độ chính xác được sử dụng để lưu trữ giá trị fast (seconds, milliseconds, microseconds hoặc nanoseconds). | seconds |
Kiểu Bool (Bool Type)
Ví dụ field mapping cho bool:
name: is_active
description: Activation status
type: bool
stored: true
indexed: true
fast: true
Tham số trường Bool:
| Biến | Mô tả | Giá trị mặc định |
|---|---|---|
description | Mô tả tùy chọn của trường. | None |
stored | Giá trị có được lưu trữ trong document store không. | true |
indexed | Giá trị có được lập chỉ mục không. | true |
fast | Giá trị có được lưu trữ trong fast field không. | false |
Kiểu IP (IP Type)
Ví dụ field mapping cho ip:
name: host_ip
description: Host IP address
type: ip
fast: true
Tham số trường IP:
| Biến | Mô tả | Giá trị mặc định |
|---|---|---|
description | Mô tả tùy chọn của trường. | None |
stored | Giá trị có được lưu trữ trong document store không. | true |
indexed | Giá trị có được lập chỉ mục không. | true |
fast | Giá trị có được lưu trữ trong fast field không. | false |
Kiểu Bytes (Bytes Type)
Ví dụ field mapping cho bytes:
name: binary
type: bytes
stored: true
indexed: true
fast: true
input_format: hex
output_format: hex
Tham số trường Bytes:
| Biến | Mô tả | Giá trị mặc định |
|---|---|---|
description | Mô tả tùy chọn của trường. | None |
stored | Giá trị có được lưu trữ trong document store không. | true |
indexed | Giá trị có được lập chỉ mục không. | true |
fast | Giá trị có được lưu trữ trong fast field không. | false |
input_format | Mã hóa được sử dụng để biểu diễn dữ liệu nhị phân đầu vào, có thể là hex hoặc base64. | base64 |
output_format | Mã hóa được sử dụng để biểu diễn dữ liệu nhị phân trong kết quả tìm kiếm, có thể là hex hoặc base64. | base64 |
Kiểu JSON (JSON Type)
Ví dụ field mapping cho json:
name: parameters
type: json
stored: true
indexed: true
tokenizer: raw
expand_dots: false
fast:
normalizer: lowercase
Tham số trường JSON:
| Biến | Mô tả | Giá trị mặc định |
|---|---|---|
description | Mô tả tùy chọn của trường. | None |
stored | Giá trị có được lưu trữ trong document store không. | true |
indexed | Giá trị có được lập chỉ mục không. | true |
fast | Giá trị có được lưu trữ trong fast field không. | true |
tokenizer | Tên của Tokenizer, có thể chọn raw, default, en_stem và chinese_compatible. | raw |
record | Mô tả lượng thông tin của index, có thể chọn basic, freq và position. | basic |
expand_dots | Nếu đúng, các khóa JSON chứa . sẽ được mở rộng. | true |
Kiểu tổng hợp (Composite Types)
Array (Array)
Quickwit hỗ trợ array cho tất cả các kiểu nguyên thủy (ngoại trừ kiểu object). Để khai báo một array kiểu i64 trong cấu hình index, chỉ cần đặt type thành array<i64>.
Object (Object)
name: resource
type: object
field_mappings:
- name: service
type: text
Concatenate (Concatenate)
name: my_default_field
type: concatenate
concatenated_fields:
- text
- resource.author
include_dynamic_fields: true
tokenizer: default
record: basic
Chế độ (Mode)
Quickwit cung cấp ba chế độ khác nhau:
dynamic(mặc định): Các trường chưa được ánh xạ sẽ được Quickwit thu thập và xử lý theo cách được xác định trong tham sốdynamic_mapping.lenient: Quickwit sẽ bỏ qua các trường chưa được ánh xạ.strict: Nếu tài liệu chứa các trường chưa được ánh xạ, Quickwit sẽ bỏ qua tài liệu đó và tính nó là một lỗi.
Dynamic Mapping (Dynamic Mapping)
Chế độ dynamic cho phép chạy Quickwit ở chế độ không có lược đồ hoặc có lược đồ một phần.
Cấu hình của chế độ dynamic có thể được đặt thông qua tham số dynamic_mapping, mặc định là:
version: 0.7
index_id: my-dynamic-index
doc_mapping:
mode: dynamic
dynamic_mapping:
indexed: true
stored: true
tokenizer: default
record: basic
expand_dots: true
fast: true
Quy tắc xác thực tên trường (Field Name Validation Rules)
Quickwit chỉ chấp nhận tên trường khớp với biểu thức chính quy sau:
^[@$_\-a-zA-Z][@$_/\.\-a-zA-Z0-9]{0,254}$
Hành vi với giá trị null hoặc trường bị thiếu (Behavior with null values or missing fields)
Các giá trị null hoặc trường bị thiếu trong tài liệu JSON sẽ được bỏ qua một cách im lặng khi lập chỉ mục.
Cài đặt Index (Indexing Settings)
| Biến | Mô tả | Giá trị mặc định |
|---|---|---|
commit_timeout_secs | Số giây tối đa để commit một split kể từ khi tạo. | 60 |
split_num_docs_target | Số lượng tài liệu mục tiêu trên mỗi split. | 10000000 |
merge_policy | Mô tả chiến lược được sử dụng để kích hoạt các thao tác merge split. | |
resources.heap_size | Kích thước heap của indexer cho mỗi nguồn trên mỗi index. | 2000000000 |
docstore_compression_level | Mức nén zstd được sử dụng trong docstore. | 8 |
docstore_blocksize | Kích thước của khối trong docstore, tính bằng byte. | 1000000 |
Merge Policies (Merge Policies)
"Stable log" merge policy:
indexing_settings:
merge_policy:
type: "stable_log"
min_level_num_docs: 100000
merge_factor: 10
max_merge_factor: 12
maturation_period: 48h
"Limit Merge" merge policy:
indexing_settings:
merge_policy:
type: "limit_merge"
max_merge_ops: 5
merge_factor: 10
max_merge_factor: 12
maturation_period: 48h
No merge:
indexing_settings:
merge_policy:
type: "no_merge"
Sử dụng bộ nhớ Indexer (Indexer Memory Usage)
Indexer sử dụng 2 GiB heap memory theo mặc định.
Cài đặt Tìm kiếm (Search Settings)
| Biến | Mô tả | Giá trị mặc định |
|---|---|---|
default_search_fields | Danh sách các trường mặc định được sử dụng để tìm kiếm. | None |
Retention Policy (Retention Policy)
retention:
period: 90 days
schedule: daily
| Biến | Mô tả | Giá trị mặc định |
|---|---|---|
period | Khoảng thời gian sau đó split sẽ bị xóa. | Bắt buộc |
schedule | Tần suất chính sách lưu giữ được đánh giá và áp dụng. | hourly |
Cấu hình Metastore (Metastore Configuration)
Quickwit cần một nơi để lưu trữ thông tin meta về các index của nó.
Metastore được xác định hoàn toàn bằng một URI. Có thể đặt nó bằng cách chỉnh sửa tham số metastore_uri trong node configuration file (thường có tên là quickwit.yaml).
Quickwit cung cấp hai implementation:
- PostgreSQL: Được khuyến nghị cho sử dụng phân tán.
- File-backed implementation.
PostgreSQL Metastore (PostgreSQL Metastore)
Cấu hình PostgreSQL metastore bằng cách đặt URI PostgreSQL trong tham số metastore_uri trong tệp cấu hình Quickwit. URI có định dạng:
postgres://[user]:[password]@[host]:[port]/[dbname]
Các URI PostgreSQL hợp lệ:
postgres://localhost/mydb
postgres://user@localhost
postgres://user:secret@localhost
postgres://host1:123,host2:456/mydb
File-backed Metastore (File-backed Metastore)
s3://my-indexes
s3://quickwit/my-indexes
s3://quickwit/my-indexes#polling_interval=30s
file:///local/indices
file:///local/indices#polling_interval=30s
/local/indices
./quickwit-metastores
Cấu hình Polling (Polling Configuration)
Có thể cấu hình file-backed metastore để định kỳ polling để duy trì chế độ xem cập nhật. Để cấu hình khoảng thời gian polling (tính bằng giây), hãy thêm URI fragment vào storage URI: s3://quickwit/my-indexes#polling_interval=30s. Chỉ có thể cấu hình polling interval bằng giây.
Cấu hình Source (Source Configuration)
Quickwit có thể đưa dữ liệu vào index từ một hoặc nhiều source.
Có thể thêm source sau khi tạo index bằng lệnh CLI quickwit source create.
Cũng có thể kích hoạt hoặc vô hiệu hóa source bằng các lệnh con quickwit source enable/disable.
ID Source (Source ID)
ID Source là một chuỗi dùng để xác định duy nhất source trong index. Nó chỉ có thể chứa các chữ cái ASCII hoa hoặc thường, số, dấu gạch ngang (-) và dấu gạch dưới (_). Nó phải bắt đầu bằng một chữ cái và chứa ít nhất 3 ký tự, nhưng không quá 255.
Loại Source (Source Type)
Các loại source có sẵn: ingest-api, kafka, kinesis và pulsar. Loại file cũng được hỗ trợ, nhưng chỉ dùng để ingest cục bộ từ CLI.
Tham số Source (Source Parameters)
File Source (File Source)
Ingest một file cụ thể (CLI only):
./quickwit tool local-ingest --index <index> --input-path <input-path>
Notification based file ingestion (beta):
cat << EOF > source-config.yaml
version: 0.8
source_id: my-sqs-file-source
source_type: file
num_pipelines: 2
params:
notifications:
- type: sqs
queue_url: https://sqs.us-east-1.amazonaws.com/123456789012/queue-name
message_type: s3_notification
EOF
./quickwit source create --index my-index --source-config source-config.yaml
Ingest API Source (Ingest API Source)
Ingest API source đọc dữ liệu từ Ingest API. Source này được tạo tự động khi tạo index và không thể xóa hoặc vô hiệu hóa.
Kafka Source (Kafka Source)
cat << EOF > source-config.yaml
version: 0.8
source_id: my-kafka-source
source_type: kafka
num_pipelines: 2
params:
topic: my-topic
client_params:
bootstrap.servers: localhost:9092
security.protocol: SSL
EOF
./quickwit source create --index my-index --source-config source-config.yaml
Kinesis Source (Kinesis Source)
cat << EOF > source-config.yaml
version: 0.7
source_id: my-kinesis-source
source_type: kinesis
params:
stream_name: my-stream
EOF
quickwit source create --index my-index --source-config source-config.yaml
Pulsar Source (Pulsar Source)
cat << EOF > source-config.yaml
version: 0.7
source_id: my-pulsar-source
source_type: pulsar
params:
topics:
- my-topic
address: pulsar://localhost:6650
EOF
./quickwit source create --index my-index --source-config source-config.yaml
Số lượng Pipeline (Number of Pipelines)
Tham số num_pipelines chỉ áp dụng cho các source phân tán như Kafka, GCP PubSub và Pulsar. Nó xác định số lượng pipeline sẽ chạy trên cluster cho source.
Tham số Transform (Transform Parameters)
transform:
script: |
.message = downcase(string!(.message))
.timestamp = now()
del(.username)
timezone: local
Định dạng đầu vào (Input Format)
Tham số input_format chỉ định định dạng dữ liệu mà source mong đợi. Các định dạng được hỗ trợ:
json: Mặc định.plain_text: Tài liệu văn bản không có cấu trúc.
Kích hoạt/Vô hiệu hóa Source (Enabling/Disabling a Source)
quickwit source disable --index my-index --source my-source
Xóa Source (Deleting a Source)
quickwit source delete --index my-index --source my-source
Cấu hình Cổng (Ports Configuration)
| Dịch vụ | Cổng được sử dụng | Giao thức | Giá trị mặc định |
|---|---|---|---|
| HTTP server với REST API | ${rest.listen_port} | TCP | 7280 |
| Cluster membership | ${rest.listen_port} | UDP | 7280 |
| GRPC service | ${rest.listen_port} + 1 | TCP | 7281 |