Configuring BlackHole

Có hai loại cài đặt BlackHole: động (dynamic) và tĩnh (static).

Dynamic settings

Dynamic index settings là cài đặt bạn có thể cập nhật bất cứ lúc nào. Bạn có thể cấu hình cài đặt BlackHole động thông qua API Cài đặt Cụm. Để biết chi tiết, hãy xem Cập nhật cài đặt cụm bằng API.
Bất cứ khi nào có thể, hãy sử dụng API Cài đặt cụm; blackhole.yml là cục bộ cho mỗi nút, trong khi API áp dụng cài đặt cho tất cả các nút trong cụm.

Static settings

Một số thao tác là tĩnh và yêu cầu bạn phải sửa đổi tệp cấu hình blackhole.yml và khởi động lại cụm. Nhìn chung, các thiết lập này liên quan đến mạng, việc hình thành cụm và hệ thống tệp cục bộ. Để tìm hiểu thêm, hãy xem phần Hình thành cụm.

Chỉ định cài đặt cấu hình khi khởi động

Bạn có thể chỉ định cài đặt cấu hình theo những cách sau.

Flags at startup

Bạn có thể truyền cấu hình trực tiếp tới tiến trình JVM khi khởi động bằng cách sử dụng cờ -E khi khởi chạy BlackHole:
./blackhole -Ecluster.name=blackhole-cluster -Enode.name=blackhole-node1 -Ehttp.host=0.0.0.0 -Ediscovery.type=single-node

Directly in the shell environment

Bạn có thể cấu hình các biến môi trường trực tiếp trong môi trường shell trước khi khởi động BlackHole, như thể hiện trong ví dụ sau:
export BLACKHOLE_JAVA_OPTS="-Xms2g -Xmx2g"
export BLACKHOLE_PATH_CONF="/etc/blackhole"
./blackhole

Systemd service file

Khi chạy BlackHole dưới dạng dịch vụ do systemd quản lý, bạn có thể chỉ định các biến môi trường trong tệp dịch vụ, như được hiển thị trong ví dụ sau:
# /etc/systemd/system/blackhole.service.d/override.conf
[Service]
Environment="BLACKHOLE_JAVA_OPTS=-Xms2g -Xmx2g"
Environment="BLACKHOLE_PATH_CONF=/etc/blackhole"
Sau khi tạo hoặc sửa đổi tệp, hãy tải lại cấu hình systemd và khởi động lại dịch vụ bằng lệnh sau:
sudo systemctl daemon-reload
sudo systemctl restart blackhole

Docker environment variables

Khi chạy BlackHole trong Docker, bạn có thể chỉ định các biến môi trường bằng tùy chọn -e với lệnh docker run, như được hiển thị trong lệnh sau:
docker run -e "BLACKHOLE_JAVA_OPTS=-Xms2g -Xmx2g" -e "BLACKHOLE_PATH_CONF=/usr/share/blackhole/config" ghcr.io/gcsclabs/blackhole-backend:latest

Updating cluster settings using the API

Bước đầu tiên để thay đổi cài đặt là xem cài đặt hiện tại bằng cách gửi yêu cầu sau:
GET _cluster/settings?include_defaults=true
Để có bản tóm tắt ngắn gọn hơn về các cài đặt không mặc định, hãy gửi yêu cầu sau:
GET _cluster/settings
Có ba loại thiết lập trong API thiết lập cụm: cố định, tạm thời và mặc định. Thiết lập cố định sẽ tồn tại sau khi cụm khởi động lại. Sau khi khởi động lại, BlackHole sẽ xóa thiết lập tạm thời. Nếu bạn chỉ định cùng một thiết lập ở nhiều nơi, BlackHole sẽ sử dụng thứ tự ưu tiên sau:
  1. Transient settings
  2. Persistent settings
  3. Settings from blackhole.yml
  4. Default settings
Để thay đổi cài đặt, hãy sử dụng API Cài đặt Cụm và chỉ định giá trị mới là cố định hoặc tạm thời. Ví dụ này minh họa biểu mẫu cài đặt phẳng:
PUT _cluster/settings
{
  "persistent": {
    "action.auto_create_index": false
  }
}
Bạn cũng có thể sử dụng biểu mẫu mở rộng, cho phép bạn sao chép và dán từ phản hồi GET và thay đổi các giá trị hiện có:
PUT _cluster/settings
{
  "persistent": {
    "action": {
      "auto_create_index": false
    }
  }
}

Configuration file

Bạn có thể tìm thấy blackhole.yml tại /usr/share/blackhole/config/blackhole.yml (Docker) hoặc /etc/blackhole/blackhole.yml (most Linux distributions) trên mỗi nút. Bạn có thể chỉnh sửa BLACKHOLE_PATH_CONF=/etc/blackhole để thay đổi vị trí thư mục cấu hình. Biến này được lấy từ /etc/default/blackhole (gói Debian) và /etc/sysconfig/blackhole (gói RPM).
Nếu bạn đặt biến BLACKHOLE_PATH_CONF tùy chỉnh, hãy lưu ý rằng các biến môi trường mặc định khác sẽ không được tải.
Bạn không đánh dấu cài đặt trong blackhole.yml là cố định hay tạm thời và cài đặt sử dụng dạng phẳng:
cluster.name: my-application
action.auto_create_index: true
compatibility.override_main_response_version: true
Cấu hình demo bao gồm một số cài đặt cho plugin Bảo mật mà bạn nên sửa đổi trước khi sử dụng BlackHole cho khối lượng công việc sản xuất. Để tìm hiểu thêm, hãy xem mục Bảo mật.

(Optional) Cấu hình tiêu đề CORS

Nếu bạn đang làm việc trên một ứng dụng khách chạy trên cụm BlackHole trên một miền khác, bạn có thể cấu hình tiêu đề trong blackhole.yml để cho phép phát triển ứng dụng cục bộ trên cùng một máy. Sử dụng Chia sẻ Tài nguyên Nguồn gốc chéo (Cross-Origin Resource Sharing) để ứng dụng của bạn có thể thực hiện lệnh gọi đến API BlackHole đang chạy cục bộ. Thêm các dòng sau vào tệp custom-blackhole.yml của bạn:
http.host: 0.0.0.0
http.port: 9200
http.cors.allow-origin: "http://localhost"
http.cors.enabled: true
http.cors.allow-headers: X-Requested-With,X-Auth-Token,Content-Type,Content-Length,Authorization
http.cors.allow-credentials: true

Cấu hình và cài đặt hệ thống

Để biết tổng quan về cách tạo cụm BlackHole và các ví dụ về cài đặt cấu hình, hãy xem mục Tạo cụm. Để tìm hiểu thêm về cài đặt tĩnh và động, hãy xem mục Cấu hình BlackHole. BlackHole hỗ trợ các cài đặt hệ thống sau:
Cài đặtLoạiMô tả
cluster.nameStatic, chuỗiTên cụm. Mặc định là blackhole.
node.nameStatic, chuỗiTên mô tả cho nút. Bắt buộc.
node.rolesStatic, danh sáchXác định một hoặc nhiều vai trò cho một nút BlackHole. Các giá trị hợp lệ là cluster_manager, data, ingest, search, ml, remote_cluster_clientcoordinating_only. Mặc định là cluster_manager,data,ingest,remote_cluster_client.
path.dataStatic, chuỗiĐường dẫn đến thư mục lưu trữ dữ liệu của bạn. Phân tách nhiều vị trí bằng dấu phẩy. Mặc định là $BLACKHOLE_HOME/data.
path.logsStatic, chuỗiĐường dẫn đến các tệp nhật ký. Mặc định là $BLACKHOLE_HOME/logs.
bootstrap.memory_lockStatic, BooleanKhóa bộ nhớ khi khởi động. Chúng tôi khuyến nghị đặt kích thước heap khoảng một nửa bộ nhớ có sẵn trên hệ thống và chủ sở hữu tiến trình được phép sử dụng giới hạn này. BlackHole không hoạt động tốt khi hệ thống đang hoán đổi bộ nhớ. Mặc định là false.
bootstrap.system_call_filterStatic, BooleanKiểm soát liệu BlackHole có bật bộ lọc lệnh gọi hệ thống (seccomp) để tăng cường bảo mật hay không. Khi được bật, bộ lọc lệnh gọi hệ thống ngăn chặn một số lệnh gọi hệ thống có khả năng nguy hiểm được thực thi, cung cấp một lớp bảo mật bổ sung. Nếu không thể cài đặt bộ lọc lệnh gọi hệ thống do vấn đề cấu hình hệ thống, có thể đặt cài đặt này thành false để tắt chúng, nhưng điều này làm giảm bảo mật. Mặc định là true.
node.store.allow_mmapStatic, BooleanKiểm soát liệu có cho phép truy cập tệp ánh xạ bộ nhớ cho các hoạt động lưu trữ chỉ mục hay không. Khi được bật, BlackHole có thể sử dụng ánh xạ bộ nhớ (các loại lưu trữ mmapfs và hybridfs) để cải thiện hiệu suất I/O bằng cách ánh xạ tệp trực tiếp vào bộ nhớ ảo. Tắt cài đặt này buộc sử dụng các triển khai lưu trữ thay thế không yêu cầu ánh xạ bộ nhớ, điều này có thể cần thiết trong các môi trường có hạn chế ánh xạ bộ nhớ hoặc không gian địa chỉ ảo hạn chế. Mặc định là true.

Network settings

BlackHole sử dụng cài đặt HTTP để cấu hình giao tiếp với máy khách bên ngoài thông qua REST API và cài đặt vận chuyển cho giao tiếp giữa các nút nội bộ trong BlackHole. Để tìm hiểu thêm về cài đặt tĩnh và động, hãy xem phần Cấu hình BlackHole. BlackHole hỗ trợ các cài đặt mạng phổ biến sau:
Cài đặtLoạiMô tả
network.hostStatic, danh sáchLiên kết một nút BlackHole với một địa chỉ. Sử dụng 0.0.0.0 để bao gồm tất cả các giao diện mạng có sẵn, hoặc chỉ định một địa chỉ IP được gán cho một giao diện cụ thể. Cài đặt network.host là sự kết hợp của network.bind_hostnetwork.publish_host nếu chúng có cùng giá trị. Một cách thay thế cho network.host là cấu hình network.bind_hostnetwork.publish_host riêng biệt khi cần. Xem Cài đặt mạng nâng cao.
http.portStatic, giá trị đơn hoặc phạm viLiên kết một nút BlackHole với một cổng tùy chỉnh hoặc một phạm vi cổng cho giao tiếp HTTP. Bạn có thể chỉ định một địa chỉ hoặc một phạm vi địa chỉ. Mặc định là 9200-9300.
transport.portStatic, giá trị đơn hoặc phạm viLiên kết một nút BlackHole với một cổng tùy chỉnh cho giao tiếp giữa các nút. Bạn có thể chỉ định một địa chỉ hoặc một phạm vi địa chỉ. Mặc định là 9300-9400.

Cài đặt mạng nâng cao

BlackHole hỗ trợ các cài đặt mạng nâng cao sau:
Cài đặtLoạiMô tả
network.bind_hostStatic, danh sáchLiên kết một nút BlackHole với một hoặc nhiều địa chỉ cho các kết nối đến. Mặc định là giá trị trong network.host.
network.publish_hostStatic, danh sáchChỉ định một hoặc nhiều địa chỉ mà một nút BlackHole công bố cho các nút khác trong cụm để chúng có thể kết nối với nó.

General TCP settings

BlackHole hỗ trợ các cài đặt TCP sau đây áp dụng cho tất cả các kết nối mạng, bao gồm cả lớp HTTP và lớp vận chuyển:
Cài đặtLoạiMô tả
network.tcp.keep_aliveStatic, BooleanBật hoặc tắt TCP keep-alive cho tất cả các kết nối TCP được BlackHole sử dụng, bao gồm cả lớp HTTP và lớp vận chuyển. Khi được bật, hệ điều hành sẽ gửi các gói keep-alive định kỳ để phát hiện các kết nối chết. Mặc định là true.
network.tcp.no_delayStatic, BooleanBật hoặc tắt tùy chọn TCP_NODELAY cho tất cả các kết nối TCP. Khi được bật, tắt thuật toán Nagle, có thể giảm độ trễ cho các tin nhắn nhỏ nhưng tăng lưu lượng mạng. Điều này áp dụng cho cả kết nối HTTP và vận chuyển. Mặc định là true.
network.tcp.receive_buffer_sizeStatic, đơn vị byteĐặt kích thước bộ đệm nhận TCP cho tất cả các kết nối TCP được BlackHole sử dụng. Điều này ảnh hưởng đến cả kết nối HTTP và vận chuyển. Bộ đệm lớn hơn có thể cải thiện thông lượng cho các kết nối băng thông cao. Theo mặc định, giá trị này không được đặt rõ ràng và sử dụng mặc định của hệ điều hành.
network.tcp.reuse_addressStatic, BooleanKiểm soát liệu các địa chỉ TCP có thể được sử dụng lại cho tất cả các kết nối TCP hay không. Điều này ảnh hưởng đến hành vi liên kết socket cho cả kết nối HTTP và vận chuyển. Mặc định là true trên các máy không phải Windows và false trên Windows.
network.tcp.send_buffer_sizeStatic, đơn vị byteĐặt kích thước bộ đệm gửi TCP cho tất cả các kết nối TCP được BlackHole sử dụng. Điều này ảnh hưởng đến cả kết nối HTTP và vận chuyển. Bộ đệm lớn hơn có thể cải thiện thông lượng cho các kết nối băng thông cao. Theo mặc định, giá trị này không được đặt rõ ràng và sử dụng mặc định của hệ điều hành.

Advanced HTTP settings

BlackHole hỗ trợ các cài đặt mạng nâng cao sau đây cho giao tiếp HTTP:
Cài đặtLoạiMô tả
http.hostStatic, danh sáchĐặt địa chỉ của một nút BlackHole cho giao tiếp HTTP. Cài đặt http.host là sự kết hợp của http.bind_hosthttp.publish_host nếu chúng có cùng giá trị. Một cách thay thế cho http.host là cấu hình http.bind_hosthttp.publish_host riêng biệt khi cần.
http.bind_hostStatic, danh sáchChỉ định một hoặc nhiều địa chỉ mà một nút BlackHole liên kết để lắng nghe các kết nối HTTP đến.
http.publish_hostStatic, danh sáchChỉ định một hoặc nhiều địa chỉ mà một nút BlackHole công bố cho các nút khác để giao tiếp HTTP.
http.compressionStatic, BooleanBật hỗ trợ nén bằng cách sử dụng Accept-Encoding khi có thể. Khi HTTPS được bật, mặc định là false, nếu không, mặc định là true. Tắt nén cho HTTPS giúp giảm thiểu các rủi ro bảo mật tiềm ẩn, như các cuộc tấn công BREACH. Để bật nén cho lưu lượng HTTPS, hãy đặt rõ ràng http.compression thành true.
http.max_header_sizeStatic, chuỗiKích thước tổng hợp tối đa của tất cả các tiêu đề HTTP được phép trong một yêu cầu. Mặc định là 16KB.
http.compression_levelStatic, số nguyênXác định mức nén sử dụng cho các phản hồi HTTP khi nén được bật. Các giá trị hợp lệ nằm trong phạm vi từ 1 (nén tối thiểu) đến 9 (nén tối đa). Giá trị cao hơn cung cấp nén tốt hơn nhưng sử dụng nhiều tài nguyên CPU hơn. Mặc định là 3.
http.max_content_lengthStatic, đơn vị byteĐặt độ dài nội dung tối đa được phép cho các yêu cầu HTTP. Các yêu cầu vượt quá giới hạn này sẽ bị từ chối. Cài đặt này giúp ngăn ngừa các vấn đề về bộ nhớ do các yêu cầu cực lớn gây ra. Mặc định là 100mb.
http.max_initial_line_lengthStatic, đơn vị byteĐặt độ dài tối đa được phép cho các URL HTTP trong dòng yêu cầu ban đầu. Các URL vượt quá giới hạn này sẽ bị từ chối. Mặc định là 4kB.
http.max_warning_header_countStatic, số nguyênĐặt số lượng tiêu đề cảnh báo tối đa có thể được bao gồm trong các phản hồi HTTP cho máy khách. Các tiêu đề cảnh báo cung cấp thông tin bổ sung về quá trình xử lý yêu cầu. Mặc định là không giới hạn (không có giới hạn).
http.max_warning_header_sizeStatic, đơn vị byteĐặt tổng kích thước tối đa của tất cả các tiêu đề cảnh báo kết hợp trong các phản hồi HTTP cho máy khách. Điều này giúp ngăn các tiêu đề phản hồi trở nên quá lớn. Mặc định là không giới hạn (không có giới hạn).
http.pipelining.max_eventsStatic, số nguyênĐặt số lượng sự kiện tối đa có thể được xếp hàng trong bộ nhớ trước khi một kết nối HTTP bị đóng. Cài đặt này giúp quản lý việc sử dụng bộ nhớ cho HTTP pipelining. Mặc định là 10000.
http.publish_portStatic, số nguyênChỉ định cổng mà máy khách HTTP nên sử dụng khi giao tiếp với nút này. Cài đặt này hữu ích khi một nút cụm nằm sau proxy hoặc tường lửa và http.port thực tế không thể truy cập trực tiếp từ bên ngoài mạng. Mặc định là cổng thực tế được gán qua http.port.
http.tcp.no_delayStatic, BooleanKiểm soát tùy chọn TCP_NODELAY cho các kết nối HTTP. Khi được bật, tắt thuật toán Nagle, có thể giảm độ trễ cho các tin nhắn nhỏ nhưng tăng lưu lượng mạng. Mặc định là true.

HTTP CORS settings

BlackHole hỗ trợ các thiết lập Chia sẻ tài nguyên nguồn gốc chéo (CORS) sau đây cho HTTP:
Cài đặtLoạiMô tả
http.cors.enabledStatic, BooleanBật hoặc tắt CORS cho các yêu cầu HTTP. Khi được bật, BlackHole xử lý các yêu cầu preflight CORS và phản hồi với các tiêu đề Access-Control-Allow-Origin phù hợp nếu nguồn gốc yêu cầu được phép. Khi bị tắt, BlackHole bỏ qua tiêu đề yêu cầu Origin, thực tế là tắt CORS. Mặc định là false.
http.cors.allow-originStatic, danh sáchChỉ định nguồn gốc nào được phép cho các yêu cầu CORS. Bạn có thể sử dụng ký tự đại diện (*) để cho phép tất cả các nguồn gốc, mặc dù điều này được coi là rủi ro bảo mật. Bạn cũng có thể sử dụng biểu thức chính quy bằng cách bao quanh giá trị bằng dấu gạch chéo (ví dụ: /https?:\/\/localhost(:[0-9]+)?/). Mặc định là không cho phép nguồn gốc nào.
http.cors.allow-methodsStatic, danh sáchChỉ định các phương thức HTTP nào được phép cho các yêu cầu CORS. Mặc định là OPTIONS, HEAD, GET, POST, PUT, DELETE.
http.cors.allow-headersStatic, danh sáchChỉ định các tiêu đề HTTP nào được phép trong các yêu cầu CORS. Mặc định là X-Requested-With, Content-Type, Content-Length.
http.cors.allow-credentialsStatic, BooleanKiểm soát liệu tiêu đề Access-Control-Allow-Credentials có nên được bao gồm trong các phản hồi CORS hay không. Tiêu đề này chỉ được trả về khi cài đặt này là true. Mặc định là false.
http.cors.max-ageStatic, đơn vị thời gianXác định thời gian các trình duyệt nên lưu bộ nhớ đệm kết quả của các yêu cầu preflight OPTIONS CORS. Các trình duyệt gửi các yêu cầu preflight để xác định cài đặt CORS trước khi thực hiện các yêu cầu cross-origin thực tế. Mặc định là 1728000 giây (20 ngày).

HTTP error handling settings

BlackHole hỗ trợ các cài đặt xử lý lỗi HTTP sau:
Cài đặtLoạiMô tả
http.detailed_errors.enabledStatic, BooleanKiểm soát liệu các thông báo lỗi chi tiết và stack trace có được bao gồm trong đầu ra phản hồi HTTP hay không. Khi được đặt thành false, chỉ các thông báo lỗi đơn giản được trả về trừ khi tham số yêu cầu error_trace được chỉ định (sẽ trả về lỗi khi lỗi chi tiết bị tắt). Mặc định là true.

HTTP debugging settings

BlackHole hỗ trợ các cài đặt gỡ lỗi HTTP sau để theo dõi giao tiếp HTTP:
Cài đặtLoạiMô tả
http.tracer.includeDynamic, danh sáchChỉ định danh sách các đường dẫn yêu cầu HTTP hoặc các mẫu ký tự đại diện phân tách bằng dấu phẩy để bao gồm trong truy vết HTTP. Khi được cấu hình, chỉ các yêu cầu HTTP khớp với các mẫu này được truy vết trong nhật ký. Cài đặt này hữu ích để gỡ lỗi các endpoint HTTP hoặc lệnh gọi API cụ thể. Mặc định là [] (danh sách trống, truy vết tất cả các yêu cầu khi truy vết HTTP được bật).
http.tracer.excludeDynamic, danh sáchChỉ định danh sách các đường dẫn yêu cầu HTTP hoặc các mẫu ký tự đại diện phân tách bằng dấu phẩy để loại trừ khỏi truy vết HTTP. Các yêu cầu HTTP khớp với các mẫu này không được truy vết trong nhật ký, ngay cả khi truy vết HTTP được bật. Cài đặt này hữu ích để giảm nhiễu từ các endpoint thường xuyên hoặc không quan trọng. Mặc định là [] (danh sách trống, không loại trừ khi truy vết HTTP được bật).

Advanced transport settings

BlackHole hỗ trợ các thiết lập mạng nâng cao sau đây cho truyền thông vận tải:
Cài đặtLoạiMô tả
transport.hostStatic, danh sáchĐặt địa chỉ của một nút BlackHole cho giao tiếp vận chuyển. Cài đặt transport.host là sự kết hợp của transport.bind_hosttransport.publish_host nếu chúng có cùng giá trị. Một cách thay thế cho transport.host là cấu hình transport.bind_hosttransport.publish_host riêng biệt khi cần.
transport.bind_hostStatic, danh sáchChỉ định một hoặc nhiều địa chỉ mà một nút BlackHole liên kết để lắng nghe các kết nối vận chuyển đến.
transport.publish_hostStatic, danh sáchChỉ định một hoặc nhiều địa chỉ mà một nút BlackHole công bố cho các nút khác để giao tiếp vận chuyển.

Transport debugging settings

BlackHole hỗ trợ các thiết lập gỡ lỗi vận chuyển sau đây để theo dõi liên lạc vận chuyển:
Cài đặtLoạiMô tả
transport.tracer.includeDynamic, danh sáchChỉ định danh sách các hành động vận chuyển hoặc các mẫu phân tách bằng dấu phẩy để bao gồm trong truy vết vận chuyển. Khi được cấu hình, chỉ các giao tiếp vận chuyển khớp với các mẫu này được truy vết trong nhật ký. Cài đặt này hữu ích để gỡ lỗi các hoạt động nội bộ BlackHole cụ thể. Mặc định là [] (danh sách trống, truy vết tất cả các hành động khi truy vết vận chuyển được bật).
transport.tracer.excludeDynamic, danh sáchChỉ định danh sách các hành động vận chuyển hoặc các mẫu phân tách bằng dấu phẩy để loại trừ khỏi truy vết vận chuyển. Các giao tiếp vận chuyển khớp với các mẫu này không được truy vết trong nhật ký, ngay cả khi truy vết vận chuyển được bật. Cài đặt này hữu ích để giảm nhiễu từ các hoạt động thường xuyên hoặc không quan trọng. Mặc định là [] (danh sách trống, không loại trừ khi truy vết vận chuyển được bật).

Transport profile settings

BlackHole hỗ trợ các thiết lập cấu hình vận chuyển sau đây cho phép cấu hình nhiều cấu hình vận chuyển cho các loại kết nối khác nhau. Cấu hình vận chuyển cho phép bạn liên kết với nhiều cổng trên các giao diện khác nhau cho các loại kết nối khác nhau. Cấu hình mặc định đóng vai trò dự phòng cho các cấu hình khác và kiểm soát cách nút này kết nối với các nút khác trong cụm. Các thiết lập sau có thể được cấu hình cho từng cấu hình vận chuyển:
Cài đặtLoạiMô tả
transport.profiles.<profile_name>.portDynamic, giá trị đơn hoặc phạm viĐặt cổng hoặc phạm vi cổng để liên kết cho cấu hình vận chuyển này. Các cấu hình khác nhau có thể sử dụng các cổng khác nhau để phân tách các loại lưu lượng.
transport.profiles.<profile_name>.bind_hostDynamic, danh sáchChỉ định các giao diện mạng mà cấu hình vận chuyển này nên liên kết cho các kết nối đến. Các cấu hình khác nhau có thể liên kết với các giao diện mạng khác nhau.
transport.profiles.<profile_name>.publish_hostDynamic, danh sáchChỉ định địa chỉ mà cấu hình vận chuyển này công bố cho các nút khác để chúng có thể kết nối với nó. Điều này hữu ích khi địa chỉ liên kết khác với địa chỉ có thể truy cập từ bên ngoài.
transport.profiles.<profile_name>.tcp.no_delayDynamic, BooleanKiểm soát tùy chọn TCP_NODELAY cho các kết nối trên cấu hình vận chuyển này. Khi được bật, tắt thuật toán Nagle để giảm độ trễ cho các tin nhắn nhỏ.
transport.profiles.<profile_name>.tcp.keep_aliveDynamic, BooleanKiểm soát tùy chọn SO_KEEPALIVE cho các kết nối trên cấu hình vận chuyển này. Khi được bật, hệ điều hành gửi các gói keep-alive định kỳ để phát hiện các kết nối chết.
transport.profiles.<profile_name>.tcp.keep_idleDynamic, đơn vị thời gianĐặt khoảng thời gian một kết nối phải nhàn rỗi trước khi bắt đầu gửi các probe keepalive TCP. Chỉ có sẵn trên Linux và Mac với JDK 11 trở lên. Mặc định là -1 (sử dụng mặc định hệ thống).
transport.profiles.<profile_name>.tcp.keep_intervalDynamic, đơn vị thời gianĐặt khoảng thời gian giữa các probe keepalive TCP cho các kết nối trên cấu hình vận chuyển này. Chỉ có sẵn trên Linux và Mac với JDK 11 trở lên. Mặc định là -1 (sử dụng mặc định hệ thống).
transport.profiles.<profile_name>.tcp.keep_countDynamic, số nguyênĐặt số lượng probe keepalive TCP có thể không được xác nhận trước khi kết nối bị ngắt. Chỉ có sẵn trên Linux và Mac với JDK 11 trở lên. Mặc định là -1 (sử dụng mặc định hệ thống).
transport.profiles.<profile_name>.tcp.reuse_addressDynamic, BooleanKiểm soát tùy chọn SO_REUSEADDR cho các socket trên cấu hình vận chuyển này, cho phép tái sử dụng địa chỉ sau khi socket đóng.
transport.profiles.<profile_name>.tcp.send_buffer_sizeDynamic, đơn vị byteĐặt kích thước bộ đệm gửi TCP cho các kết nối trên cấu hình vận chuyển này. Bộ đệm lớn hơn có thể cải thiện thông lượng cho các kết nối băng thông cao.
transport.profiles.<profile_name>.tcp.receive_buffer_sizeDynamic, đơn vị byteĐặt kích thước bộ đệm nhận TCP cho các kết nối trên cấu hình vận chuyển này. Bộ đệm lớn hơn có thể cải thiện thông lượng cho các kết nối băng thông cao.

Advanced transport settings (continued)

Cài đặtLoạiMô tả
transport.compressStatic, BooleanBật nén DEFLATE cho tất cả giao tiếp vận chuyển giữa các nút. Khi được bật, dữ liệu truyền giữa các nút được nén để giảm sử dụng băng thông mạng, điều này có thể có lợi cho các cụm kết nối qua các liên kết mạng chậm hơn. Tuy nhiên, nén thêm chi phí CPU cho các hoạt động nén và giải nén. Mặc định là false.
transport.connect_timeoutStatic, đơn vị thời gianĐặt khoảng thời gian chờ để thiết lập các kết nối vận chuyển mới giữa các nút. Nếu một nỗ lực kết nối không hoàn thành trong giới hạn thời gian này, nó được coi là thất bại. Cài đặt này giúp ngăn các nút bị treo vô thời hạn khi cố gắng kết nối với các nút không phản hồi hoặc không thể truy cập. Mặc định là 30s.
transport.ping_scheduleStatic, đơn vị thời gianCấu hình khoảng thời gian để gửi các tin nhắn ping cấp ứng dụng nhằm duy trì các kết nối vận chuyển giữa các nút. Khi được đặt thành giá trị dương, các nút sẽ gửi các tin nhắn ping định kỳ để phát hiện và ngăn chặn thời gian chờ kết nối nhàn rỗi. Đặt giá trị này thành -1 sẽ tắt ping cấp ứng dụng. Thường khuyến nghị sử dụng cài đặt TCP keep-alive thay thế vì chúng cung cấp giám sát kết nối toàn diện hơn cho tất cả các loại kết nối. Mặc định là -1 (tắt).
transport.publish_portStatic, số nguyênChỉ định cổng mà các nút khác nên sử dụng khi kết nối với nút này cho giao tiếp vận chuyển. Cài đặt này đặc biệt hữu ích khi các nút nằm sau proxy, tường lửa hoặc cấu hình NAT nơi cổng liên kết thực tế khác với cổng có thể truy cập từ bên ngoài. Nếu không được chỉ định, các nút khác sẽ sử dụng cổng được xác định bởi cài đặt transport.port. Mặc định là cổng thực tế được gán qua transport.port.

Selecting the transport

Giao thức vận chuyển BlackHole mặc định được cung cấp bởi mô-đun transport-netty4 và sử dụng công cụ Netty 4 cho cả giao tiếp nội bộ dựa trên TCP giữa các nút trong cụm và giao tiếp bên ngoài dựa trên HTTP với máy khách. Giao tiếp này hoàn toàn không đồng bộ và không chặn. Bảng sau liệt kê các plugin giao tiếp khác có sẵn có thể được sử dụng thay thế cho nhau:
PluginMô tả
transport-reactor-netty4Giao thức HTTP BlackHole dựa trên Project Reactor và Netty 4 (thử nghiệm). Cài đặt: ./bin/blackhole-plugin install transport-reactor-netty4. Cấu hình (sử dụng blackhole.yml): http.type: reactor-netty4 hoặc http.type: reactor-netty4-secure

Discovery and gateway settings

Sau đây là các thiết lập liên quan đến khám phá và cổng cục bộ. Để tìm hiểu thêm về thiết lập tĩnh và động, hãy xem phần Cấu hình BlackHole.

Discovery settings

Quá trình khám phá được sử dụng khi một cụm được hình thành. Nó bao gồm việc khám phá các nút và bầu chọn một nút quản lý cụm.

Static discovery settings

Các thiết lập khám phá tĩnh sau phải được cấu hình trước khi cụm khởi động:
Cài đặtLoạiMô tả
discovery.seed_hostsStatic, danh sáchCung cấp danh sách các địa chỉ của các nút đủ điều kiện làm quản lý cụm trong cụm. Mỗi địa chỉ có định dạng host:port hoặc host. Nếu một tên máy chủ phân giải thành nhiều địa chỉ qua DNS, BlackHole sử dụng tất cả chúng. Cài đặt này là cần thiết để các nút tìm thấy nhau trong quá trình hình thành cụm. Mặc định là ["127.0.0.1", "[::1]"].
discovery.seed_providersStatic, danh sáchChỉ định loại nhà cung cấp máy chủ seed nào sử dụng để lấy địa chỉ của các nút seed được sử dụng để bắt đầu quá trình khám phá. Theo mặc định, sử dụng nhà cung cấp máy chủ seed dựa trên cài đặt, lấy địa chỉ nút seed từ cài đặt discovery.seed_hosts.
discovery.typeStatic, chuỗiChỉ định liệu BlackHole nên hình thành cụm nhiều nút hay hoạt động như một nút đơn. Khi được đặt thành single-node, BlackHole hình thành cụm một nút và bỏ qua một số thời gian chờ. Cài đặt này hữu ích cho môi trường phát triển và thử nghiệm. Các giá trị hợp lệ là multi-node (mặc định) và single-node.
cluster.initial_cluster_manager_nodesStatic, danh sáchThiết lập tập hợp ban đầu các nút đủ điều kiện làm quản lý cụm trong một cụm mới. Cài đặt này là bắt buộc khi khởi động cụm lần đầu tiên và phải chứa tên nút (như được xác định bởi node.name) của các nút đủ điều kiện làm quản lý cụm ban đầu. Danh sách này nên trống cho các nút tham gia cụm hiện có. Mặc định là [] (danh sách trống).

Dynamic discovery settings

Các thiết lập khám phá động sau đây có thể được cập nhật trong khi cụm đang chạy:
Cài đặtLoạiMô tả
cluster.join.timeoutStatic, đơn vị thời gianKhoảng thời gian một nút chờ sau khi gửi yêu cầu tham gia cụm trước khi coi yêu cầu là thất bại và thử lại. Thời gian chờ này không áp dụng khi discovery.type được đặt thành single-node. Mặc định là 60s.
cluster.publish.info_timeoutStatic, đơn vị thời gianKhoảng thời gian nút quản lý cụm chờ mỗi bản cập nhật trạng thái cụm được xuất bản hoàn toàn cho tất cả các nút trước khi ghi nhật ký thông báo cho biết một số nút đang phản hồi chậm. Cài đặt này giúp xác định các nút phản hồi chậm trong quá trình cập nhật trạng thái cụm. Mặc định là 10s.

Cluster election settings

Các thiết lập sau đây kiểm soát hành vi bầu chọn trình quản lý cụm:
Việc thay đổi các cài đặt này so với mặc định có thể khiến cụm của bạn không thể bầu chọn nút quản lý cụm.
Cài đặtLoạiMô tả
cluster.election.back_off_timeStatic, đơn vị thời gianĐặt độ trễ tăng dần được thêm vào các lần thử lại bầu cử sau mỗi lần thất bại. Sử dụng backoff tuyến tính, trong đó mỗi lần bầu cử thất bại tăng thời gian chờ thêm giá trị này trước lần thử tiếp theo. Mặc định là 100ms.
cluster.election.durationStatic, đơn vị thời gianĐặt thời gian tối đa cho mỗi cuộc bầu cử trước khi một nút coi nó là thất bại và lên lịch thử lại. Điều này kiểm soát thời lượng tối đa của quá trình bầu cử. Mặc định là 500ms.
cluster.election.initial_timeoutStatic, đơn vị thời gianĐặt giới hạn trên cho thời gian một nút sẽ chờ ban đầu, hoặc sau khi nút quản lý cụm được bầu thất bại, trước khi thử bầu cử đầu tiên. Điều này kiểm soát độ trễ bầu cử ban đầu. Mặc định là 100ms.
cluster.election.max_timeoutStatic, đơn vị thời gianĐặt giới hạn trên tối đa cho thời gian một nút sẽ chờ trước khi thử bầu cử, ngăn chặn các cuộc bầu cử quá thưa thớt trong các phân vùng mạng dài. Điều này giới hạn độ trễ bầu cử tối đa. Mặc định là 10s.

Expert-level discovery settings

Các thiết lập khám phá sau đây dành cho cấu hình cấp chuyên gia. Việc thay đổi các thiết lập này so với mặc định có thể gây mất ổn định cụm.
Cài đặtLoạiMô tả
discovery.cluster_formation_warning_timeoutStatic, đơn vị thời gianĐặt thời gian một nút sẽ cố gắng hình thành cụm trước khi ghi nhật ký cảnh báo rằng cụm không được hình thành. Nếu cụm không được hình thành sau khi thời gian chờ này đã hết, nút sẽ ghi thông báo cảnh báo bắt đầu bằng cụm từ “cluster manager not discovered” và mô tả trạng thái hiện tại của quá trình khám phá. Mặc định là 10s.
discovery.find_peers_intervalStatic, đơn vị thời gianĐặt thời gian một nút sẽ chờ trước khi thử một vòng khám phá khác. Điều này kiểm soát tần suất các nỗ lực khám phá ngang hàng trong quá trình hình thành cụm. Mặc định là 1s.
discovery.probe.connect_timeoutStatic, đơn vị thời gianĐặt thời gian chờ khi cố gắng kết nối với mỗi địa chỉ trong quá trình khám phá nút. Thời gian chờ này áp dụng cho nỗ lực kết nối ban đầu đến các thành viên cụm tiềm năng. Mặc định là 3s.
discovery.probe.handshake_timeoutStatic, đơn vị thời gianĐặt thời gian chờ khi cố gắng xác định nút từ xa thông qua bắt tay trong quá trình khám phá. Thời gian chờ này áp dụng cho giai đoạn xác định nút sau khi kết nối thành công. Mặc định là 1s.
discovery.request_peers_timeoutStatic, đơn vị thời gianĐặt thời gian một nút sẽ chờ sau khi hỏi các nút ngang hàng để lấy thông tin trước khi coi yêu cầu là thất bại. Thời gian chờ này áp dụng cho các yêu cầu thông tin ngang hàng trong quá trình khám phá. Mặc định là 3s.
discovery.seed_resolver.max_concurrent_resolversStatic, số nguyênChỉ định số lượng tra cứu DNS đồng thời để thực hiện khi phân giải địa chỉ của các nút seed trong quá trình khám phá cụm. Cài đặt này kiểm soát tính song song của phân giải DNS cho các máy chủ seed. Mặc định là 10.
discovery.seed_resolver.timeoutStatic, đơn vị thời gianChỉ định thời gian chờ cho mỗi tra cứu DNS được thực hiện khi phân giải địa chỉ của các nút seed. Thời gian chờ này áp dụng cho các hoạt động phân giải DNS riêng lẻ trong quá trình khám phá cụm. Mặc định là 5s.

Gateway settings

Cổng cục bộ lưu trữ trạng thái cụm trên đĩa và dữ liệu phân mảnh được sử dụng khi cụm được khởi động lại. Các thiết lập cổng cục bộ sau được hỗ trợ:
Cài đặtLoạiMô tảMặc địnhKhuyến nghị
gateway.recover_after_nodesStatic, số nguyênSố lượng tối thiểu tổng số nút cho bất kỳ vai trò nào phải đang chạy sau khi khởi động lại cụm hoàn toàn trước khi phục hồi có thể bắt đầu.0 (tắt) - phục hồi có thể bắt đầu ngay khi cụm được hình thành.Đặt cao hơn một chút so với một nửa số lượng tất cả các nút dự kiến để cụm không bắt đầu phục hồi với quá ít nút.
gateway.recover_after_data_nodesStatic, số nguyênSố lượng tối thiểu các nút dữ liệu phải đang chạy sau khi khởi động lại cụm hoàn toàn trước khi phục hồi có thể bắt đầu.0Đặt thành một phần đáng kể của các nút dữ liệu - khoảng 50-70% tổng số nút dữ liệu - để tránh phục hồi sớm.
gateway.expected_data_nodesStatic, số nguyênSố lượng nút dữ liệu dự kiến trong cụm. Khi tất cả đều có mặt, việc phục hồi các phân đoạn cục bộ có thể bắt đầu ngay lập tức.0Đặt giá trị này bằng số lượng thực tế của các nút dữ liệu trong cụm của bạn để phục hồi có thể bắt đầu ngay khi tất cả các nút dữ liệu đang chạy.
gateway.recover_after_timeStatic, đơn vị thời gianKhoảng thời gian tối đa để chờ phục hồi nếu số lượng nút dữ liệu dự kiến chưa đạt được. Sau thời gian này, phục hồi tiến hành.5m nếu expected_data_nodes hoặc recover_after_nodes được đặt. Nếu không thì tắt.Đặt cao hơn một chút so với thời gian tham gia nút điển hình của bạn; các cụm lớn hơn thường cần thời gian phục hồi lâu hơn và được điều chỉnh dựa trên hành vi khởi động quan sát được.

Security settings

Plugin Bảo mật cung cấp một số tệp cấu hình YAML được sử dụng để lưu trữ các thiết lập cần thiết, xác định cách plugin Bảo mật quản lý người dùng, vai trò và hoạt động trong cụm. Để biết danh sách đầy đủ các tệp cấu hình của plugin Bảo mật, hãy xem mục Sửa đổi tệp YAML. Các phần sau đây mô tả các thiết lập liên quan đến bảo mật trong blackhole.yml. Bạn có thể tìm thấy blackhole.yml trong <BLACKHOLE_HOME>/config/blackhole.yml. Để tìm hiểu thêm về thiết lập tĩnh và động, hãy xem phần Cấu hình BlackHole.

Common settings

The Security plugin hỗ trợ các common setting sau:
Cài đặtLoạiMô tả
plugins.security.nodes_dnStaticChỉ định danh sách các tên phân biệt (DN) đại diện cho các nút khác trong cụm. Cài đặt này hỗ trợ ký tự đại diện và biểu thức chính quy. Danh sách DN cũng được đọc từ chỉ mục bảo mật ngoài cấu hình YAML khi plugins.security.nodes_dn_dynamic_config_enabled được đặt thành true. Nếu cài đặt này không được cấu hình đúng, cụm sẽ không thể hình thành vì các nút không thể tin tưởng lẫn nhau và sẽ dẫn đến lỗi: Transport client authentication no longer supported.
plugins.security.nodes_dn_dynamic_config_enabledStaticLiên quan đến các trường hợp sử dụng cross_cluster khi cần quản lý danh sách nodes_dn được phép mà không phải khởi động lại các nút mỗi khi cấu hình cross_cluster remote mới. Đặt nodes_dn_dynamic_config_enabled thành true cho phép API Distinguished Names có thể gọi bởi super-admin, cung cấp phương tiện để cập nhật hoặc truy xuất nodes_dn động. Cài đặt này chỉ có hiệu lực nếu plugins.security.cert.intercluster_request_evaluator_class không được đặt. Mặc định là false.
plugins.security.authcz.admin_dnStaticXác định các DN của chứng chỉ được gán quyền quản trị. Bắt buộc.
plugins.security.roles_mapping_resolutionStaticXác định cách các backend role được ánh xạ tới Security role. Giá trị hợp lệ: MAPPING_ONLY (Mặc định) - Ánh xạ phải được cấu hình rõ ràng trong roles_mapping.yml; BACKENDROLES_ONLY - Backend role được ánh xạ trực tiếp tới security role; BOTH - Backend role được ánh xạ tới security role cả trực tiếp và thông qua roles_mapping.yml.
plugins.security.dls.modeStaticĐặt chế độ đánh giá bảo mật cấp tài liệu (DLS). Mặc định là adaptive. Xem Cách đặt chế độ đánh giá DLS.
plugins.security.compliance.saltStaticSalt sử dụng khi tạo giá trị băm cho việc che giấu trường. Phải có ít nhất 32 ký tự. Chỉ cho phép ký tự ASCII. Tùy chọn.
plugins.security.compliance.immutable_indicesStaticTài liệu trong các chỉ mục được đánh dấu là bất biến tuân theo mô hình ghi-một-lần, đọc-nhiều-lần. Tài liệu được tạo trong các chỉ mục này không thể thay đổi và do đó là bất biến.
config.dynamic.http.anonymous_auth_enabledStaticBật xác thực ẩn danh. Điều này sẽ khiến tất cả các trình xác thực HTTP không yêu cầu xác thực. Mặc định là false.
http.detailed_errors.enabledStaticBật thông báo lỗi chi tiết cho các lệnh gọi REST được thực hiện đối với cụm BlackHole. Nếu được đặt thành true, cung cấp root_cause cùng với mã lỗi. Mặc định là true.

REST management API settings

Cài đặtLoạiMô tả
plugins.security.restapi.roles_enabledStaticBật quyền truy cập dựa trên vai trò vào REST management API cho các vai trò được liệt kê. Các vai trò được phân tách bằng dấu phẩy. Mặc định là danh sách trống (không vai trò nào được phép truy cập REST management API). Xem Kiểm soát truy cập cho API.
plugins.security.restapi.endpoints_disabled.<role>.<endpoint>StaticVô hiệu hóa các endpoint cụ thể và phương thức HTTP của chúng cho các vai trò. Giá trị cho cài đặt này tạo thành một mảng các phương thức HTTP. Ví dụ: plugins.security.restapi.endpoints_disabled.all_access.ACTIONGROUPS: ["PUT","POST","DELETE"]. Theo mặc định, tất cả các endpoint và phương thức đều được phép. Các endpoint hiện có bao gồm ACTIONGROUPS, CACHE, CONFIG, ROLES, ROLESMAPPING, INTERNALUSERS, SYSTEMINFO, PERMISSIONSINFOLICENSE. Xem Kiểm soát truy cập cho API.
plugins.security.restapi.password_validation_regexStaticChỉ định biểu thức chính quy để đặt tiêu chí cho mật khẩu đăng nhập. Để biết thêm thông tin, xem Cài đặt mật khẩu.
plugins.security.restapi.password_validation_error_messageStaticChỉ định thông báo lỗi hiển thị khi mật khẩu không vượt qua xác thực. Cài đặt này được sử dụng kết hợp với plugins.security.restapi.password_validation_regex.
plugins.security.restapi.password_min_lengthStaticĐặt số ký tự tối thiểu cho độ dài mật khẩu khi sử dụng công cụ ước tính độ mạnh mật khẩu dựa trên điểm. Mặc định là 8. Đây cũng là giá trị tối thiểu. Để biết thêm thông tin, xem Cài đặt mật khẩu.
plugins.security.restapi.password_score_based_validation_strengthStaticĐặt ngưỡng để xác định mật khẩu mạnh hay yếu. Giá trị hợp lệ là fair, good, strongvery_strong. Cài đặt này được sử dụng kết hợp với plugins.security.restapi.password_min_length.
plugins.security.unsupported.restapi.allow_securityconfig_modificationStaticCho phép sử dụng các phương thức PUT và PATCH cho các API cấu hình.

Advanced settings

Plugin Bảo mật hỗ trợ các cài đặt nâng cao sau:
Cài đặtLoạiMô tả
plugins.security.authcz.impersonation_dnStaticBật mạo danh ở lớp vận chuyển. Điều này cho phép các DN mạo danh như người dùng khác. Xem Mạo danh người dùng.
plugins.security.authcz.rest_impersonation_userStaticBật mạo danh ở lớp REST. Điều này cho phép người dùng mạo danh như người dùng khác. Xem Mạo danh người dùng.
plugins.security.allow_default_init_securityindexStaticKhi được đặt thành true, BlackHole Security sẽ tự động khởi tạo chỉ mục cấu hình với các tệp trong thư mục /config nếu chỉ mục không tồn tại.
plugins.security.allow_unsafe_democertificatesStaticKhi được đặt thành true, BlackHole khởi động với chứng chỉ demo. Các chứng chỉ này chỉ được cấp cho mục đích demo.
plugins.security.system_indices.permission.enabledStaticBật tính năng quyền chỉ mục hệ thống. Khi được đặt thành true, tính năng được bật và người dùng có quyền sửa đổi vai trò có thể tạo vai trò bao gồm quyền cấp quyền truy cập vào chỉ mục hệ thống. Khi được đặt thành false, quyền bị tắt và chỉ quản trị viên có chứng chỉ admin mới có thể thay đổi chỉ mục hệ thống. Theo mặc định, quyền được đặt thành false trong cụm mới.
Các tùy chọn plugins.security.allow_default_init_securityindexplugins.security.allow_unsafe_democertificates sử dụng mật khẩu và chứng chỉ mặc định được biết rộng rãi, không an toàn cho môi trường sản xuất. Chỉ sử dụng trong mạng/môi trường riêng tư.

Expert-level settings

Cài đặt cấp chuyên gia chỉ nên được cấu hình và triển khai bởi quản trị viên hiểu rõ tính năng. Việc hiểu sai tính năng có thể dẫn đến rủi ro bảo mật, khiến plugin Bảo mật không hoạt động bình thường hoặc gây mất dữ liệu.
Plugin Bảo mật hỗ trợ các cài đặt cấp chuyên gia sau:
Cài đặtLoạiMô tả
plugins.security.config_index_nameTĩnhTên của chỉ mục nơi .opendistro_security lưu trữ cấu hình của nó.
plugins.security.cert.oidTĩnhXác định Object Identifier (OID) của chứng chỉ nút máy chủ.
plugins.security.cert.intercluster_request_evaluator_classTĩnhChỉ định triển khai của org.blackhole.security.transport.InterClusterRequestEvaluator được sử dụng để đánh giá các yêu cầu liên cụm. Các instance phải triển khai constructor một tham số nhận đối tượng org.blackhole.common.settings.Settings.
plugins.security.enable_snapshot_restore_privilegeTĩnhKhi được đặt thành false, cài đặt này vô hiệu hóa khôi phục snapshot cho người dùng thông thường. Trong trường hợp này, chỉ các yêu cầu khôi phục snapshot được ký bằng chứng chỉ TLS admin mới được chấp nhận. Khi được đặt thành true (mặc định), người dùng thông thường có thể khôi phục snapshot nếu họ có đủ quyền.
plugins.security.check_snapshot_restore_write_privilegesTĩnhKhi được đặt thành false, các kiểm tra chỉ mục bổ sung được bỏ qua. Khi được đặt thành mặc định true, các nỗ lực khôi phục snapshot được đánh giá cho indices:admin/createindices:data/write/index.
plugins.security.cache.ttl_minutesTĩnhXác định thời gian để bộ nhớ đệm xác thực hết hạn. Bộ nhớ đệm xác thực giúp tăng tốc xác thực bằng cách tạm thời lưu trữ các đối tượng người dùng được trả về từ backend. Đặt giá trị theo phút. Mặc định là 60. Tắt bộ nhớ đệm bằng cách đặt giá trị thành 0.
plugins.security.disabledTĩnhTắt BlackHole Security. Cảnh báo: Việc tắt plugin này có thể làm lộ cấu hình của bạn (bao gồm mật khẩu) ra công chúng.
plugins.security.protected_indices.enabledTĩnhNếu được đặt thành true, bật các chỉ mục được bảo vệ. Các chỉ mục được bảo vệ còn an toàn hơn các chỉ mục thông thường. Các chỉ mục này yêu cầu vai trò để truy cập như bất kỳ chỉ mục truyền thống nào khác và yêu cầu vai trò bổ sung để hiển thị.
plugins.security.protected_indices.rolesTĩnhChỉ định danh sách các vai trò mà người dùng phải được ánh xạ để truy cập các chỉ mục được bảo vệ.
plugins.security.protected_indices.indicesTĩnhChỉ định danh sách các chỉ mục để đánh dấu là được bảo vệ. Các chỉ mục này chỉ hiển thị cho người dùng được ánh xạ tới các vai trò được chỉ định trong plugins.security.protected_indices.roles.
plugins.security.system_indices.enabledTĩnhNếu được đặt thành true, bật các chỉ mục hệ thống. Các chỉ mục hệ thống tương tự như chỉ mục bảo mật, ngoại trừ nội dung không được mã hóa.
plugins.security.system_indices.indicesTĩnhDanh sách các chỉ mục được sử dụng làm chỉ mục hệ thống. Cài đặt này được kiểm soát bởi cài đặt plugins.security.system_indices.enabled.
Nếu bạn thay đổi bất kỳ thuộc tính băm mật khẩu nào sau đây, bạn phải băm lại tất cả mật khẩu nội bộ để đảm bảo tính tương thích và bảo mật.
Cài đặtLoạiMô tả
plugins.security.password.hashing.algorithmTĩnhChỉ định thuật toán băm mật khẩu để sử dụng. Giá trị hợp lệ: BCrypt (Mặc định), PBKDF2, Argon2.
plugins.security.password.hashing.bcrypt.roundsTĩnhChỉ định số vòng sử dụng cho việc băm mật khẩu với BCrypt. Giá trị hợp lệ nằm trong khoảng từ 4 đến 31, bao gồm cả hai. Mặc định là 12.
plugins.security.password.hashing.bcrypt.minorTĩnhChỉ định phiên bản minor của thuật toán BCrypt. Giá trị hợp lệ: A, B, Y (Mặc định).
plugins.security.password.hashing.pbkdf2.functionTĩnhChỉ định hàm giả ngẫu nhiên được áp dụng cho mật khẩu. Giá trị hợp lệ: SHA1, SHA224, SHA256 (Mặc định), SHA384, SHA512.
plugins.security.password.hashing.pbkdf2.iterationsTĩnhChỉ định số lần hàm giả ngẫu nhiên được áp dụng cho mật khẩu. Mặc định là 600000.
plugins.security.password.hashing.pbkdf2.lengthTĩnhChỉ định độ dài mong muốn của khóa dẫn xuất cuối cùng. Mặc định là 256.
plugins.security.password.hashing.argon2.iterationsTĩnhChỉ định số lần duyệt qua bộ nhớ mà thuật toán thực hiện. Tăng giá trị này làm tăng thời gian tính toán CPU và cải thiện khả năng chống lại các cuộc tấn công brute-force. Mặc định: 3.
plugins.security.password.hashing.argon2.memoryTĩnhChỉ định lượng bộ nhớ (tính bằng kibibyte) được sử dụng trong quá trình băm. Mặc định: 65536 (64 MiB).
plugins.security.password.hashing.argon2.parallelismTĩnhChỉ định số luồng song song được sử dụng cho tính toán. Mặc định: 1.
plugins.security.password.hashing.argon2.lengthTĩnhChỉ định độ dài (tính bằng byte) của đầu ra băm kết quả. Mặc định: 32.
plugins.security.password.hashing.argon2.typeTĩnhChỉ định biến thể Argon2 nào sử dụng. Giá trị hợp lệ: Argon2i, Argon2d, Argon2id (mặc định).
plugins.security.password.hashing.argon2.versionTĩnhChỉ định phiên bản Argon2 nào sử dụng. Giá trị hợp lệ: 16, 19 (mặc định).

Audit log settings

Plugin Bảo mật hỗ trợ các cài đặt nhật ký kiểm toán sau:
Cài đặtLoạiMô tả
plugins.security.audit.enable_restĐộngBật hoặc tắt ghi nhật ký yêu cầu REST. Mặc định là true (bật).
plugins.security.audit.enable_transportĐộngBật hoặc tắt ghi nhật ký yêu cầu cấp vận chuyển. Mặc định là false (tắt).
plugins.security.audit.resolve_bulk_requestsĐộngBật hoặc tắt ghi nhật ký yêu cầu bulk. Khi được bật, tất cả các yêu cầu con trong các yêu cầu bulk cũng được ghi nhật ký. Mặc định là false (tắt).
plugins.security.audit.config.disabled_categoriesĐộngTắt các danh mục sự kiện được chỉ định.
plugins.security.audit.ignore_requestsĐộngLoại trừ các yêu cầu được chỉ định khỏi việc ghi nhật ký. Cho phép ký tự đại diện và biểu thức chính quy chứa các hành động hoặc đường dẫn yêu cầu REST.
plugins.security.audit.threadpool.sizeTĩnhXác định số lượng luồng trong nhóm luồng được sử dụng để ghi nhật ký sự kiện. Mặc định là 10. Đặt giá trị này thành 0 sẽ tắt nhóm luồng, nghĩa là plugin ghi nhật ký sự kiện đồng bộ.
plugins.security.audit.threadpool.max_queue_lenTĩnhĐặt độ dài hàng đợi tối đa cho mỗi luồng. Mặc định là 100000.
plugins.security.audit.ignore_usersĐộngMột mảng người dùng. Các yêu cầu kiểm toán từ những người dùng trong danh sách sẽ không được ghi nhật ký.
plugins.security.audit.typeTĩnhĐiểm đến của các sự kiện nhật ký kiểm toán. Giá trị hợp lệ là internal_blackhole, external_blackhole, debugwebhook.
plugins.security.audit.config.http_endpointsTĩnhDanh sách các endpoint cho localhost.
plugins.security.audit.config.indexTĩnhChỉ mục nhật ký kiểm toán. Mặc định là auditlog6. Chỉ mục có thể là tĩnh hoặc bao gồm ngày để xoay vòng hàng ngày, ví dụ: "'auditlog6-'YYYY.MM.dd".
plugins.security.audit.config.typeTĩnhChỉ định loại nhật ký kiểm toán là auditlog.
plugins.security.audit.config.usernameTĩnhTên người dùng cho cấu hình nhật ký kiểm toán.
plugins.security.audit.config.passwordTĩnhMật khẩu cho cấu hình nhật ký kiểm toán.
plugins.security.audit.config.enable_sslTĩnhBật hoặc tắt SSL cho ghi nhật ký kiểm toán.
plugins.security.audit.config.verify_hostnamesTĩnhBật hoặc tắt xác minh tên máy chủ cho chứng chỉ SSL/TLS. Mặc định là true (bật).
plugins.security.audit.config.enable_ssl_client_authTĩnhBật hoặc tắt xác thực máy khách SSL/TLS. Mặc định là false (tắt).
plugins.security.audit.config.cert_aliasTĩnhBí danh cho chứng chỉ được sử dụng để truy cập nhật ký kiểm toán.
plugins.security.audit.config.pemkey_filepathTĩnhĐường dẫn tệp tương đối /config đến khóa Privacy Enhanced Mail (PEM) được sử dụng cho ghi nhật ký kiểm toán.
plugins.security.audit.config.pemkey_contentTĩnhNội dung được mã hóa base64 của khóa PEM được sử dụng cho ghi nhật ký kiểm toán. Thay thế cho pemkey_filepath.
plugins.security.audit.config.pemkey_passwordTĩnhMật khẩu cho khóa riêng định dạng PEM được sử dụng bởi máy khách.
plugins.security.audit.config.pemcert_filepathTĩnhĐường dẫn tệp tương đối /config đến chứng chỉ PEM được sử dụng cho ghi nhật ký kiểm toán.
plugins.security.audit.config.pemcert_contentTĩnhNội dung được mã hóa base64 của chứng chỉ PEM được sử dụng cho ghi nhật ký kiểm toán. Thay thế cho pemcert_filepath.
plugins.security.audit.config.pemtrustedcas_filepathTĩnhĐường dẫn tệp tương đối /config đến cơ quan chứng nhận gốc tin cậy.
plugins.security.audit.config.pemtrustedcas_contentTĩnhNội dung được mã hóa base64 của cơ quan chứng nhận gốc. Thay thế cho pemtrustedcas_filepath.
plugins.security.audit.config.webhook.urlTĩnhURL webhook.
plugins.security.audit.config.webhook.formatTĩnhĐịnh dạng được sử dụng cho webhook. Giá trị hợp lệ là URL_PARAMETER_GET, URL_PARAMETER_POST, TEXT, JSONSLACK.
plugins.security.audit.config.webhook.ssl.verifyTĩnhBật hoặc tắt xác minh bất kỳ chứng chỉ SSL/TLS nào được gửi cùng với bất kỳ yêu cầu webhook nào. Mặc định là true (bật).
plugins.security.audit.config.webhook.ssl.pemtrustedcas_filepathTĩnhĐường dẫn tệp tương đối /config đến cơ quan chứng nhận tin cậy mà các yêu cầu webhook được xác minh.
plugins.security.audit.config.webhook.ssl.pemtrustedcas_contentTĩnhNội dung được mã hóa base64 của cơ quan chứng nhận được sử dụng để xác minh các yêu cầu webhook. Thay thế cho pemtrustedcas_filepath.
plugins.security.audit.config.log4j.logger_nameTĩnhTên tùy chỉnh cho Log4j logger.
plugins.security.audit.config.log4j.levelTĩnhCung cấp mức nhật ký mặc định cho Log4j logger. Giá trị hợp lệ là OFF, FATAL, ERROR, WARN, INFO, DEBUG, TRACEALL. Mặc định là INFO.
opendistro_security.audit.config.disabled_rest_categoriesĐộngDanh sách các danh mục REST bị bỏ qua bởi logger. Giá trị hợp lệ là AUTHENTICATEDGRANTED_PRIVILEGES.
opendistro_security.audit.config.disabled_transport_categoriesĐộngDanh sách các danh mục lớp vận chuyển bị bỏ qua bởi logger. Giá trị hợp lệ là AUTHENTICATEDGRANTED_PRIVILEGES.

Hostname verification and DNS lookup settings

Plugin Bảo mật hỗ trợ các cài đặt xác minh tên máy chủ và tra cứu DNS sau:
Cài đặtLoạiMô tả
transport.ssl.enforce_hostname_verificationTĩnhCó xác minh tên máy chủ ở lớp vận chuyển hay không. Tùy chọn. Mặc định là true.
transport.ssl.resolve_hostnameTĩnhCó phân giải tên máy chủ với DNS ở lớp vận chuyển hay không. Tùy chọn. Mặc định là true. Chỉ hoạt động nếu xác minh tên máy chủ được bật.
Để biết thêm thông tin, hãy xem Xác minh tên máy chủ và tra cứu DNS.

Client authentication settings

Plugin Bảo mật hỗ trợ cài đặt xác thực máy khách sau:
SettingTypeDescription
plugins.security.ssl.http.clientauth_modeStaticThe TLS client authentication mode to use. Valid values are OPTIONAL (default), REQUIRE, and NONE. Optional.
Để biết thêm thông tin, hãy xem Xác thực máy khách.

Enabled cipher and protocol settings

Plugin Bảo mật hỗ trợ các cài đặt mã hóa và giao thức sau. Mỗi cài đặt phải được thể hiện trong một mảng:
SettingTypeDescription
plugins.security.ssl.http.enabled_ciphersStaticEnabled TLS cipher suites for the REST layer. Only Java format is supported.
plugins.security.ssl.http.enabled_protocolsStaticEnabled TLS protocols for the REST layer. Only Java format is supported.
plugins.security.ssl.transport.enabled_ciphersStaticEnabled TLS cipher suites for the transport layer. Only Java format is supported.
plugins.security.ssl.transport.enabled_protocolsStaticEnabled TLS protocols for the transport layer. Only Java format is supported.
Để biết thêm thông tin, hãy xem Giao thức và mật mã được kích hoạt.

Key store and trust store files—transport layer TLS settings

Plugin Bảo mật hỗ trợ các thiết lập kho lưu trữ khóa TLS và kho lưu trữ tin cậy ở lớp vận chuyển sau:
Cài đặtLoạiMô tả
plugins.security.ssl.transport.keystore_typeTĩnhLoại tệp kho lưu trữ khóa. Tùy chọn. Giá trị hợp lệ là JKS hoặc PKCS12/PFX. Mặc định là JKS.
plugins.security.ssl.transport.keystore_filepathTĩnhĐường dẫn đến tệp kho lưu trữ khóa, phải nằm trong thư mục config, được chỉ định bằng đường dẫn tương đối. Bắt buộc.
plugins.security.ssl.transport.keystore_aliasTĩnhTên bí danh kho lưu trữ khóa. Tùy chọn. Mặc định là bí danh đầu tiên.
plugins.security.ssl.transport.keystore_passwordTĩnhMật khẩu kho lưu trữ khóa. Mặc định là changeit.
plugins.security.ssl.transport.truststore_typeTĩnhLoại tệp kho lưu trữ tin cậy. Tùy chọn. Giá trị hợp lệ là JKS hoặc PKCS12/PFX. Mặc định là JKS.
plugins.security.ssl.transport.truststore_filepathTĩnhĐường dẫn đến tệp kho lưu trữ tin cậy, phải nằm trong thư mục config, được chỉ định bằng đường dẫn tương đối. Bắt buộc.
plugins.security.ssl.transport.truststore_aliasTĩnhTên bí danh kho lưu trữ tin cậy. Tùy chọn. Mặc định là tất cả các chứng chỉ.
plugins.security.ssl.transport.truststore_passwordTĩnhMật khẩu kho lưu trữ tin cậy. Mặc định là changeit.
Để biết thêm thông tin về kho lưu trữ khóa và kho lưu trữ tin cậy, hãy xem Lớp vận chuyển TLS.

Key store and trust store files—REST layer TLS settings

Plugin Bảo mật hỗ trợ các cài đặt kho lưu trữ khóa TLS lớp REST và kho lưu trữ tin cậy sau:
Cài đặtLoạiMô tả
plugins.security.ssl.http.enabledTĩnhCó bật TLS trên lớp REST hay không. Nếu được bật, chỉ HTTPS được cho phép. Tùy chọn. Mặc định là false.
plugins.security.ssl.http.keystore_typeTĩnhLoại tệp kho lưu trữ khóa. Tùy chọn. Giá trị hợp lệ là JKS hoặc PKCS12/PFX. Mặc định là JKS.
plugins.security.ssl.http.keystore_filepathTĩnhĐường dẫn đến tệp kho lưu trữ khóa, phải nằm trong thư mục config, được chỉ định bằng đường dẫn tương đối. Bắt buộc.
plugins.security.ssl.http.keystore_aliasTĩnhTên bí danh kho lưu trữ khóa. Tùy chọn. Mặc định là bí danh đầu tiên.
plugins.security.ssl.http.keystore_passwordTĩnhMật khẩu kho lưu trữ khóa. Mặc định là changeit.
plugins.security.ssl.http.truststore_typeTĩnhLoại tệp kho lưu trữ tin cậy. Tùy chọn. Giá trị hợp lệ là JKS hoặc PKCS12/PFX. Mặc định là JKS.
plugins.security.ssl.http.truststore_filepathTĩnhĐường dẫn đến tệp kho lưu trữ tin cậy, phải nằm trong thư mục config, được chỉ định bằng đường dẫn tương đối. Bắt buộc.
plugins.security.ssl.http.truststore_aliasTĩnhTên bí danh kho lưu trữ tin cậy. Tùy chọn. Mặc định là tất cả các chứng chỉ.
plugins.security.ssl.http.truststore_passwordTĩnhMật khẩu kho lưu trữ tin cậy. Mặc định là changeit.
Để biết thêm thông tin, hãy xem lớp REST TLS.

X.509 PEM certificates and PKCS #8 keys—transport layer TLS settings

Plugin Bảo mật hỗ trợ các thiết lập TLS lớp truyền tải sau đây liên quan đến chứng chỉ X.509 PEM và khóa PKCS #8:
Cài đặtLoạiMô tả
plugins.security.ssl.transport.pemkey_filepathTĩnhĐường dẫn đến tệp khóa của chứng chỉ (PKCS #8), phải nằm trong thư mục config, được chỉ định bằng đường dẫn tương đối. Bắt buộc.
plugins.security.ssl.transport.pemkey_passwordTĩnhMật khẩu khóa. Bỏ qua cài đặt này nếu khóa không có mật khẩu. Tùy chọn.
plugins.security.ssl.transport.pemcert_filepathTĩnhĐường dẫn đến chuỗi chứng chỉ nút X.509 (định dạng PEM), phải nằm trong thư mục config, được chỉ định bằng đường dẫn tương đối. Bắt buộc.
plugins.security.ssl.transport.pemtrustedcas_filepathTĩnhĐường dẫn đến các cơ quan chứng nhận gốc (định dạng PEM), phải nằm trong thư mục config, được chỉ định bằng đường dẫn tương đối. Bắt buộc.
Để biết thêm thông tin, hãy xem lớp REST TLS.

X.509 PEM certificates and PKCS #8 keys—REST layer TLS settings

Plugin Bảo mật hỗ trợ các cài đặt TLS lớp REST sau đây liên quan đến chứng chỉ X.509 PEM và khóa PKCS #8:
Cài đặtLoạiMô tả
plugins.security.ssl.http.enabledTĩnhCó bật TLS trên lớp REST hay không. Nếu được bật, chỉ HTTPS được cho phép. Tùy chọn. Mặc định là false.
plugins.security.ssl.http.pemkey_filepathTĩnhĐường dẫn đến tệp khóa của chứng chỉ (PKCS #8), phải nằm trong thư mục config, được chỉ định bằng đường dẫn tương đối. Bắt buộc.
plugins.security.ssl.http.pemkey_passwordTĩnhMật khẩu khóa. Bỏ qua cài đặt này nếu khóa không có mật khẩu. Tùy chọn.
plugins.security.ssl.http.pemcert_filepathTĩnhĐường dẫn đến chuỗi chứng chỉ nút X.509 (định dạng PEM), phải nằm trong thư mục config, được chỉ định bằng đường dẫn tương đối. Bắt buộc.
plugins.security.ssl.http.pemtrustedcas_filepathTĩnhĐường dẫn đến các cơ quan chứng nhận gốc (định dạng PEM), phải nằm trong thư mục config, được chỉ định bằng đường dẫn tương đối. Bắt buộc.
Để biết thêm thông tin, hãy xem lớp REST TLS.

Transport layer security settings

Plugin Bảo mật hỗ trợ các thiết lập bảo mật lớp truyền tải sau:
Cài đặtLoạiMô tả
plugins.security.ssl.transport.enabledTĩnhCó bật TLS trên lớp REST hay không.
plugins.security.ssl.transport.client.pemkey_passwordTĩnhMật khẩu cho khóa riêng định dạng PEM được sử dụng bởi máy khách vận chuyển.
plugins.security.ssl.transport.keystore_keypasswordTĩnhMật khẩu cho khóa bên trong kho lưu trữ khóa.
plugins.security.ssl.transport.server.keystore_keypasswordTĩnhMật khẩu cho khóa bên trong kho lưu trữ khóa máy chủ.
plugins.security.ssl.transport.server.keystore_aliasTĩnhTên bí danh cho kho lưu trữ khóa của máy chủ.
plugins.security.ssl.transport.client.keystore_aliasTĩnhTên bí danh cho kho lưu trữ khóa của máy khách.
plugins.security.ssl.transport.server.truststore_aliasTĩnhTên bí danh cho kho lưu trữ tin cậy của máy chủ.
plugins.security.ssl.transport.client.truststore_aliasTĩnhTên bí danh cho kho lưu trữ tin cậy của máy khách.
plugins.security.ssl.client.external_context_idTĩnhCung cấp cho máy khách vận chuyển một ID để sử dụng cho ngữ cảnh SSL bên ngoài.
plugins.security.ssl.transport.principal_extractor_classTĩnhChỉ định một lớp triển khai bộ trích xuất để một phần tùy chỉnh của chứng chỉ được sử dụng làm principal.
plugins.security.ssl.http.crl.file_pathTĩnhĐường dẫn tệp đến tệp danh sách thu hồi chứng chỉ.
plugins.security.ssl.http.crl.validateTĩnhBật xác thực danh sách thu hồi chứng chỉ (CRL). Mặc định là false (tắt).
plugins.security.ssl.http.crl.prefer_crlfile_over_ocspTĩnhCó ưu tiên mục nhập chứng chỉ CRL hơn mục nhập Online Certificate Status Protocol (OCSP) hay không nếu chứng chỉ chứa cả hai. Tùy chọn. Mặc định là false.
plugins.security.ssl.http.crl.check_only_end_entitiesTĩnhKhi true, chỉ các chứng chỉ lá được xác thực. Mặc định là true.
plugins.security.ssl.http.crl.disable_ocspTĩnhTắt OCSP. Mặc định là false (OCSP được bật).
plugins.security.ssl.http.crl.disable_crldpTĩnhTắt các endpoint CRL trong chứng chỉ. Mặc định là false (các endpoint CRL được bật).
plugins.security.ssl.allow_client_initiated_renegotiationTĩnhBật hoặc tắt tái thương lượng máy khách. Mặc định là false (tái thương lượng do máy khách khởi tạo không được phép).

Security plugin settings examples

# Common configuration settings
plugins.security.nodes_dn:
  - "CN=*.example.com, OU=SSL, O=Test, L=Test, C=DE"
  - "CN=node.other.com, OU=SSL, O=Test, L=Test, C=DE"
  - "CN=node.example.com, OU=SSL\\, Inc., L=Test, C=DE"  # escape additional comma with `\\`

plugins.security.authcz.admin_dn:
  - CN=kirk,OU=client,O=client,L=test,C=de

plugins.security.roles_mapping_resolution: MAPPING_ONLY
plugins.security.ssl.transport.pemcert_filepath: esnode.pem
plugins.security.ssl.transport.pemkey_filepath: esnode-key.pem
plugins.security.ssl.transport.pemtrustedcas_filepath: root-ca.pem
transport.ssl.enforce_hostname_verification: false
plugins.security.ssl.http.enabled: true
plugins.security.ssl.http.pemcert_filepath: esnode.pem
plugins.security.ssl.http.pemkey_filepath: esnode-key.pem
plugins.security.ssl.http.pemtrustedcas_filepath: root-ca.pem
plugins.security.allow_unsafe_democertificates: true
plugins.security.allow_default_init_securityindex: true
plugins.security.nodes_dn_dynamic_config_enabled: false
plugins.security.audit.type: internal_blackhole
plugins.security.enable_snapshot_restore_privilege: true
plugins.security.check_snapshot_restore_write_privileges: true
plugins.security.cache.ttl_minutes: 60
plugins.security.restapi.roles_enabled: ["all_access", "security_rest_api_access"]
plugins.security.system_indices.enabled: true
plugins.security.system_indices.indices:
  - ".opendistro-alerting-config"
  - ".opendistro-alerting-alert*"
  - ".opendistro-anomaly-results*"
  - ".opendistro-anomaly-detector*"
  - ".opendistro-anomaly-checkpoints"
  - ".opendistro-anomaly-detection-state"
  - ".opendistro-reports-*"
  - ".opendistro-notifications-*"
  - ".opendistro-notebooks"
  - ".opendistro-asynchronous-search-response*"

node.max_local_storage_nodes: 3
plugins.security.restapi.password_validation_regex: '(?=.*[A-Z])(?=.*[^a-zA-Z\d])(?=.*[0-9])(?=.*[a-z]).{8,}'
plugins.security.restapi.password_validation_error_message: >
  Password must be minimum 8 characters long and must contain at least
  one uppercase letter, one lowercase letter, one digit, and one special character.

# REST Management API configuration settings
plugins.security.restapi.roles_enabled: ["all_access", "xyz_role"]
plugins.security.restapi.endpoints_disabled.all_access.ACTIONGROUPS: ["PUT", "POST", "DELETE"]

# Audit log configuration settings
plugins.security.audit.enable_rest: true
plugins.security.audit.enable_transport: false
plugins.security.audit.resolve_bulk_requests: false
plugins.security.audit.config.disabled_categories: ["AUTHENTICATED", "GRANTED_PRIVILEGES"]
plugins.security.audit.ignore_requests: ["indices:data/read/*", "*_bulk"]
plugins.security.audit.threadpool.size: 10
plugins.security.audit.threadpool.max_queue_len: 100000
plugins.security.audit.ignore_users: ['kibanaserver', 'some*user', '/also.*regex possible/']
plugins.security.audit.type: internal_blackhole

# external_blackhole settings
plugins.security.audit.config.http_endpoints: ['localhost:9200', 'localhost:9201', 'localhost:9202']
plugins.security.audit.config.index: "'auditlog6-'YYYY.MM.dd"
plugins.security.audit.config.type: auditlog
plugins.security.audit.config.username: auditloguser
plugins.security.audit.config.password: auditlogpassword
plugins.security.audit.config.enable_ssl: false
plugins.security.audit.config.verify_hostnames: false
plugins.security.audit.config.enable_ssl_client_auth: false
plugins.security.audit.config.cert_alias: mycert
plugins.security.audit.config.pemkey_filepath: key.pem
plugins.security.audit.config.pemkey_content: <...pem base 64 content>
plugins.security.audit.config.pemkey_password: secret
plugins.security.audit.config.pemcert_filepath: cert.pem
plugins.security.audit.config.pemcert_content: <...pem base 64 content>
plugins.security.audit.config.pemtrustedcas_filepath: ca.pem
plugins.security.audit.config.pemtrustedcas_content: <...pem base 64 content>

# Webhook settings
plugins.security.audit.config.webhook.url: "http://mywebhook/endpoint"
plugins.security.audit.config.webhook.format: JSON
plugins.security.audit.config.webhook.ssl.verify: false
plugins.security.audit.config.webhook.ssl.pemtrustedcas_filepath: ca.pem
plugins.security.audit.config.webhook.ssl.pemtrustedcas_content: <...pem base 64 content>

# log4j settings
plugins.security.audit.config.log4j.logger_name: auditlogger
plugins.security.audit.config.log4j.level: INFO

# Advanced configuration settings
plugins.security.authcz.impersonation_dn:
  "CN=spock,OU=client,O=client,L=Test,C=DE":
    - worf
  "cn=webuser,ou=IT,ou=IT,dc=company,dc=com":
    - user2
    - user1

plugins.security.authcz.rest_impersonation_user:
  "picard":
    - worf
  "john":
    - steve
    - martin

plugins.security.allow_default_init_securityindex: false
plugins.security.allow_unsafe_democertificates: false
plugins.security.restapi.password_min_length: 8
plugins.security.restapi.password_score_based_validation_strength: very_strong

# Advanced SSL settings - use only if you understand SSL ins and outs
plugins.security.ssl.transport.client.pemkey_password: superSecurePassword1
plugins.security.ssl.transport.keystore_keypassword: superSecurePassword2
plugins.security.ssl.transport.server.keystore_keypassword: superSecurePassword3
plugins.security.ssl.http.keystore_keypassword: superSecurePassword4
plugins.security.ssl.http.clientauth_mode: REQUIRE
plugins.security.ssl.transport.enabled: true
plugins.security.ssl.transport.server.keystore_alias: my_alias
plugins.security.ssl.transport.client.keystore_alias: my_other_alias
plugins.security.ssl.transport.server.truststore_alias: trustore_alias_1
plugins.security.ssl.transport.client.truststore_alias: trustore_alias_2
plugins.security.ssl.client.external_context_id: my_context_id
plugins.security.ssl.transport.principal_extractor_class: org.blackhole.security.ssl.ExampleExtractor
plugins.security.ssl.http.crl.file_path: ssl/crl/revoked.crl
plugins.security.ssl.http.crl.validate: true
plugins.security.ssl.http.crl.prefer_crlfile_over_ocsp: true
plugins.security.ssl.http.crl.check_only_end_entities: false
plugins.security.ssl.http.crl.disable_ocsp: true
plugins.security.ssl.http.crl.disable_crldp: true
plugins.security.ssl.allow_client_initiated_renegotiation: true

# Expert settings - use only if you understand their use completely
plugins.security.config_index_name: .opendistro_security
plugins.security.cert.oid: '1.2.3.4.5.5'
plugins.security.cert.intercluster_request_evaluator_class: org.blackhole.security.transport.DefaultInterClusterRequestEvaluator
plugins.security.disabled: false
plugins.security.protected_indices.enabled: true
plugins.security.protected_indices.roles: ['all_access']
plugins.security.protected_indices.indices: []
plugins.security.system_indices.indices:
  - '.opendistro-alerting-config'
  - '.opendistro-ism-*'
  - '.opendistro-reports-*'
  - '.blackhole-notifications-*'
  - '.blackhole-notebooks'
  - '.blackhole-observability'
  - '.opendistro-asynchronous-search-response*'
  - '.replication-metadata-store'

Cluster settings

Các thiết lập sau đây liên quan đến cụm BlackHole. Để tìm hiểu thêm về cài đặt tĩnh và động, hãy xem phần Cấu hình BlackHole.

Cluster-level routing and allocation settings

BlackHole hỗ trợ các thiết lập định tuyến và phân bổ phân đoạn cấp cụm sau:
Cài đặtLoạiMô tả
cluster.routing.allocation.enableĐộng, chuỗiBật hoặc tắt phân bổ cho các loại phân đoạn cụ thể. Giá trị hợp lệ: all (mặc định), primaries, new_primaries, none.
cluster.routing.allocation.node_concurrent_incoming_recoveriesĐộng, số nguyênCấu hình số lượng phục hồi phân đoạn đến đồng thời được phép xảy ra trên một nút. Mặc định là 2.
cluster.routing.allocation.node_concurrent_outgoing_recoveriesĐộng, số nguyênCấu hình số lượng phục hồi phân đoạn đi đồng thời được phép xảy ra trên một nút. Mặc định là 2.
cluster.routing.allocation.node_concurrent_recoveriesĐộng, chuỗiĐược sử dụng để đặt cả node_concurrent_incoming_recoveriesnode_concurrent_outgoing_recoveries thành cùng một giá trị.
cluster.routing.allocation.node_initial_primaries_recoveriesĐộng, số nguyênĐặt số lượng phục hồi cho các phân đoạn chính chưa được gán sau khi khởi động lại nút. Mặc định là 4.
cluster.routing.allocation.same_shard.hostĐộng, BooleanKhi được đặt thành true, nhiều bản sao của một phân đoạn được ngăn không cho phân bổ đến các nút riêng biệt trên cùng một máy chủ. Mặc định là false.
cluster.routing.rebalance.enableĐộng, chuỗiBật hoặc tắt cân bằng lại cho các loại phân đoạn cụ thể. Giá trị hợp lệ: all (mặc định), primaries, replicas, none.
cluster.routing.allocation.allow_rebalanceĐộng, chuỗiChỉ định khi nào cân bằng lại phân đoạn được phép. Giá trị hợp lệ: always, indices_primaries_active, indices_all_active (mặc định).
cluster.routing.allocation.cluster_concurrent_rebalanceĐộng, số nguyênCho phép bạn kiểm soát số lượng cân bằng lại phân đoạn đồng thời được phép trên toàn cụm. Mặc định là 2.
cluster.routing.allocation.balance.shardĐộng, số thựcXác định hệ số trọng số cho tổng số phân đoạn được phân bổ cho mỗi nút. Mặc định là 0.45.
cluster.routing.allocation.balance.indexĐộng, số thựcXác định hệ số trọng số cho số phân đoạn trên mỗi chỉ mục được phân bổ trên một nút. Mặc định là 0.55.
cluster.routing.allocation.balance.thresholdĐộng, số thựcGiá trị tối ưu hóa tối thiểu của các hoạt động cần thực hiện. Mặc định là 1.0.
cluster.routing.allocation.balance.prefer_primaryĐộng, BooleanKhi được đặt thành true, BlackHole cố gắng phân phối đều các phân đoạn chính giữa các nút cụm. Mặc định là false.
cluster.routing.allocation.rebalance.primary.enableĐộng, BooleanKhi được đặt thành true, BlackHole cố gắng cân bằng lại các phân đoạn chính giữa các nút cụm. Mặc định là false.
cluster.routing.allocation.rebalance.primary.bufferĐộng, số thựcXác định bộ đệm tối đa được phép của các phân đoạn chính giữa các nút. Mặc định là 0.1.
cluster.routing.allocation.disk.threshold_enabledĐộng, BooleanKhi được đặt thành false, tắt bộ quyết định phân bổ đĩa. Mặc định là true.
cluster.routing.allocation.disk.watermark.lowĐộng, chuỗiKiểm soát ngưỡng thấp cho việc sử dụng đĩa. Mặc định là 85%.
cluster.routing.allocation.disk.watermark.highĐộng, chuỗiKiểm soát ngưỡng cao. BlackHole sẽ cố gắng di chuyển các phân đoạn ra khỏi nút có mức sử dụng đĩa vượt quá tỷ lệ phần trăm được xác định. Mặc định là 90%.
cluster.routing.allocation.disk.watermark.flood_stageĐộng, chuỗiKiểm soát ngưỡng giai đoạn tràn. Đây là biện pháp cuối cùng để ngăn các nút hết dung lượng đĩa. Mặc định là 95%.
cluster.info.update.intervalĐộng, đơn vị thời gianĐặt tần suất BlackHole kiểm tra mức sử dụng đĩa cho mỗi nút trong cụm. Mặc định là 30s.
cluster.routing.allocation.awareness.attributesĐộng, danh sáchXem Nhận thức phân bổ phân đoạn.
cluster.routing.allocation.include.<attribute>Động, enumPhân bổ phân đoạn cho nút có thuộc tính chứa ít nhất một trong các giá trị phân tách bằng dấu phẩy được bao gồm.
cluster.routing.allocation.require.<attribute>Động, enumChỉ phân bổ phân đoạn cho nút có thuộc tính chứa tất cả các giá trị phân tách bằng dấu phẩy được bao gồm.
cluster.routing.allocation.exclude.<attribute>Động, enumKhông phân bổ phân đoạn cho nút có thuộc tính chứa bất kỳ giá trị phân tách bằng dấu phẩy nào được bao gồm. Các thuộc tính tích hợp hợp lệ: _name, _host_ip, _publish_ip, _ip, _host, _id, _tier.
cluster.routing.allocation.awareness.force.<attribute>.valuesĐộng, danh sáchXem Nhận thức bắt buộc.
cluster.routing.allocation.shard_movement_strategyĐộng, enumXác định thứ tự các phân đoạn được di chuyển từ các nút đi đến các nút đến.
Cài đặt cluster.routing.allocation.shard_movement_strategy hỗ trợ các chiến lược sau:
  • PRIMARY_FIRST - Primary shards được di dời trước, trước các phân đoạn bản sao. Việc ưu tiên này có thể giúp ngăn tình trạng sức khỏe của cụm chuyển sang màu đỏ nếu các nút di dời bị lỗi trong quá trình này.
  • REPLICA_FIRST - Các mảnh bản sao được di dời trước, trước các mảnh chính. Việc ưu tiên này có thể giúp ngăn tình trạng sức khỏe của cụm chuyển sang màu đỏ khi thực hiện di dời mảnh trong cụm BlackHole phiên bản hỗn hợp, hỗ trợ sao chép phân đoạn.
  • NO_PREFERENCE - Hành vi mặc định trong đó thứ tự di chuyển phân đoạn không quan trọng.
Các thiết lập bổ sung:
Cài đặtLoạiMô tả
cluster.routing.search_replica.strictĐộng, BooleanKiểm soát cách các yêu cầu tìm kiếm được định tuyến khi có phân đoạn bản sao tìm kiếm cho một chỉ mục. Khi được đặt thành true, tất cả các yêu cầu tìm kiếm sẽ chỉ được định tuyến đến các phân đoạn bản sao tìm kiếm. Mặc định là true.
cluster.allocator.gateway.batch_sizeĐộng, số nguyênGiới hạn số lượng phân mảnh được gửi đến các nút dữ liệu trong một lô để lấy bất kỳ siêu dữ liệu phân mảnh nào chưa được gán. Mặc định là 2000.
cluster.allocator.existing_shards_allocator.batch_enabledTĩnh, BooleanCho phép phân bổ hàng loạt các phân đoạn chưa được gán nhưng đã tồn tại trên đĩa. Mặc định là false.
cluster.routing.allocation.total_shards_per_nodeĐộng, số nguyênTổng số phân mảnh chính và phân mảnh bản sao tối đa có thể được phân bổ cho một nút duy nhất. Mặc định là -1 (không giới hạn).
cluster.routing.allocation.total_primary_shards_per_nodeĐộng, số nguyênSố lượng phân mảnh chính tối đa có thể được phân bổ cho một nút duy nhất. Mặc định là -1 (Không giới hạn).

Cluster-level shard, block, and task settings

BlackHole hỗ trợ các thiết lập phân đoạn, khối và tác vụ cấp cụm sau:
Cài đặtLoạiMô tả
action.search.shard_count.limitSố nguyênGiới hạn số lượng phân đoạn tối đa bị truy cập trong quá trình tìm kiếm. Các yêu cầu vượt quá giới hạn này sẽ bị từ chối.
cluster.blocks.read_onlyBooleanĐặt toàn bộ cụm thành chỉ đọc. Mặc định là false.
cluster.blocks.read_only_allow_deleteBooleanTương tự như cluster.blocks.read_only, nhưng cho phép bạn xóa chỉ mục.
cluster.no_cluster_manager_blockChuỗiCấu hình các hoạt động bị từ chối khi không có trình quản lý cụm nào đang hoạt động. Giá trị hợp lệ: all, write, metadata_write.
cluster.max_shards_per_nodeSố nguyênGiới hạn tổng số phân đoạn chính và bản sao cho cụm. Giới hạn được tính như sau: cluster.max_shards_per_node × số lượng nút dữ liệu không đóng băng. Mặc định là 1000.
cluster.persistent_tasks.allocation.enableChuỗiBật hoặc tắt phân bổ cho các tác vụ liên tục. Giá trị hợp lệ: all (mặc định), none.
cluster.persistent_tasks.allocation.recheck_intervalĐơn vị thời gianXác định tần suất các kiểm tra phân công được thực hiện cho các tác vụ liên tục. Mặc định là 30s, với yêu cầu tối thiểu là 10s.

Cluster-level search settings

BlackHole hỗ trợ các thiết lập tìm kiếm theo cụm sau:
Cài đặtLoạiMô tả
cluster.search.ignore_awareness_attributesBooleanKiểm soát liệu các thuộc tính nhận thức có được xem xét trong quá trình định tuyến truy vấn phân đoạn hay không. Nếu true (mặc định), cụm bỏ qua các thuộc tính nhận thức và sử dụng Chọn lọc Bản sao Thích ứng (ARS) để chọn bản sao phân đoạn tối ưu, giảm độ trễ phản hồi truy vấn. Đặt thành false để các quyết định định tuyến ưu tiên các thuộc tính nhận thức thay vì lựa chọn dựa trên hiệu suất.

Cluster-level slow log settings

Để biết thêm thông tin, hãy xem Tìm kiếm nhật ký yêu cầu chậm.
Cài đặtLoạiMô tả
cluster.search.request.slowlog.threshold.warnĐơn vị thời gianĐặt ngưỡng nhật ký chậm WARN cấp yêu cầu. Mặc định là -1.
cluster.search.request.slowlog.threshold.infoĐơn vị thời gianĐặt ngưỡng nhật ký chậm INFO cấp yêu cầu. Mặc định là -1.
cluster.search.request.slowlog.threshold.debugĐơn vị thời gianĐặt ngưỡng nhật ký chậm DEBUG cấp yêu cầu. Mặc định là -1.
cluster.search.request.slowlog.threshold.traceĐơn vị thời gianĐặt ngưỡng nhật ký chậm TRACE cấp yêu cầu. Mặc định là -1.
cluster.search.request.slowlog.levelChuỗiĐặt mức nhật ký chậm tối thiểu để ghi: WARN, INFO, DEBUGTRACE. Mặc định là TRACE.

Cluster-level index settings

Để biết thông tin về cài đặt chỉ mục cấp chỉ mục, hãy xem Cluster-level index settings.

Cluster-level coordination settings

BlackHole hỗ trợ các thiết lập phối hợp cấp cụm sau. Tất cả các thiết lập trong danh sách này đều là thiết lập động:
Việc thay đổi các cài đặt này sang các giá trị khác với mặc định có thể dẫn đến cụm không ổn định.
Cài đặtLoạiMô tả
cluster.fault_detection.leader_check.timeoutĐơn vị thời gianKhoảng thời gian một nút chờ phản hồi từ trình quản lý cụm được bầu trong quá trình kiểm tra leader trước khi coi việc kiểm tra là thất bại. Giá trị hợp lệ từ 1ms đến 60s, bao gồm cả hai. Mặc định là 10s.
cluster.fault_detection.follower_check.intervalĐơn vị thời gianKhoảng thời gian trình quản lý cụm được bầu chờ giữa các lần gửi kiểm tra follower đến các nút khác trong cụm. Giá trị hợp lệ là 100ms trở lên. Mặc định là 1000ms.
cluster.follower_lag.timeoutĐơn vị thời gianKhoảng thời gian trình quản lý cụm được bầu chờ để nhận xác nhận cho các bản cập nhật trạng thái cụm từ các nút bị chậm. Mặc định là 90s. Nếu một nút không áp dụng thành công bản cập nhật trạng thái cụm trong khoảng thời gian này, nó được coi là đã thất bại và bị loại khỏi cụm.
cluster.publish.timeoutĐơn vị thời gianKhoảng thời gian trình quản lý cụm chờ mỗi bản cập nhật trạng thái cụm được xuất bản hoàn toàn cho tất cả các nút, trừ khi discovery.type được đặt thành single-node. Mặc định là 30s.

Cluster-level fault detection settings

BlackHole hỗ trợ các thiết lập phát hiện lỗi cấp cụm sau đây để kiểm soát cách các nút phát hiện và phản hồi lỗi:
Việc thay đổi các cài đặt này so với mặc định có thể khiến cụm của bạn trở nên không ổn định.
Cài đặtLoạiMô tả
cluster.fault_detection.follower_check.retry_countTĩnh, số nguyênĐặt số lần kiểm tra follower thất bại liên tiếp phải xảy ra trước khi trình quản lý cụm được bầu coi một nút là bị lỗi và loại bỏ nó khỏi cụm. Mặc định là 3.
cluster.fault_detection.leader_check.intervalTĩnh, đơn vị thời gianĐặt thời gian mỗi nút chờ giữa các lần kiểm tra trình quản lý cụm được bầu. Điều này kiểm soát tần suất kiểm tra sức khỏe leader được thực hiện bởi các nút follower. Mặc định là 1s.
cluster.fault_detection.leader_check.retry_countTĩnh, số nguyênĐặt số lần kiểm tra leader thất bại liên tiếp phải xảy ra trước khi một nút coi trình quản lý cụm được bầu là bị lỗi và cố gắng tìm hoặc bầu trình quản lý cụm mới. Mặc định là 3.
cluster.indices.tombstones.sizeTĩnh, số nguyênĐặt số lượng tối đa các tombstone xóa chỉ mục để giữ trong trạng thái cụm. Các tombstone chỉ mục ngăn các nút không phải là thành viên của cụm khi xảy ra xóa tham gia cụm và nhập lại chỉ mục. Mặc định là 500.

Cluster-level CAT response limit settings

BlackHole hỗ trợ các cài đặt giới hạn phản hồi API CAT cấp cụm sau, tất cả đều là cài đặt động:
Cài đặtLoạiMô tả
cat.indices.response.limit.number_of_indicesSố nguyênĐặt giới hạn về số lượng chỉ mục được trả về bởi API CAT Indices. Giá trị mặc định là -1 (không giới hạn). Nếu số lượng chỉ mục trong phản hồi vượt quá giới hạn này, API trả về lỗi 429.
cat.shards.response.limit.number_of_shardsSố nguyênĐặt giới hạn về số lượng phân đoạn được trả về bởi API CAT Shards. Giá trị mặc định là -1 (không giới hạn). Nếu số lượng phân đoạn trong phản hồi vượt quá giới hạn này, API trả về lỗi 429.
cat.segments.response.limit.number_of_indicesSố nguyênĐặt giới hạn về số lượng chỉ mục được trả về bởi API CAT Segments. Giá trị mặc định là -1 (không giới hạn). Nếu số lượng chỉ mục trong phản hồi vượt quá giới hạn này, API trả về lỗi 429.

Cluster-level metadata settings

BlackHole hỗ trợ các thiết lập siêu dữ liệu cấp cụm sau:
Cài đặtLoạiMô tả
cluster.metadata.<key>Động, khác nhauThêm siêu dữ liệu cụm ở định dạng "cluster.metadata.key": "value". Cài đặt này hữu ích để lưu trữ thông tin tùy ý, ít thay đổi về cụm, chẳng hạn như chi tiết liên hệ hoặc ghi chú, mà không cần tạo một chỉ mục riêng.
Siêu dữ liệu cụm do người dùng xác định không nhằm mục đích lưu trữ thông tin nhạy cảm hoặc bí mật. Các giá trị có thể nhìn thấy bởi bất kỳ ai có quyền truy cập vào API Get Cluster Settings và được ghi lại trong nhật ký.

Cluster-level remote cluster settings

BlackHole hỗ trợ các thiết lập cụm từ xa sau:
Cài đặtLoạiMô tả
cluster.remote.initial_connect_timeoutĐộng, đơn vị thời gianĐặt khoảng thời gian chờ để thiết lập các kết nối ban đầu đến các cụm từ xa khi nút khởi động. Mặc định là 30s.
cluster.remote.<cluster_alias>.modeĐộng, chuỗiChỉ định chế độ kết nối cho một cụm từ xa cụ thể. Giá trị hợp lệ là sniff (mặc định) và proxy.
node.remote_cluster_clientTĩnh, BooleanKiểm soát liệu một nút có thể hoạt động như một máy khách liên cụm và kết nối với các cụm từ xa hay không. Mặc định là true.
cluster.remote.<cluster_alias>.skip_unavailableĐộng, BooleanKiểm soát liệu các hoạt động liên cụm có nên tiếp tục khi cụm từ xa cụ thể này không khả dụng hay không. Mặc định là false.
cluster.remote.<cluster_alias>.transport.compressĐộng, BooleanBật nén cho các giao tiếp vận chuyển với một cụm từ xa cụ thể. Mặc định là false.
cluster.remote.<cluster_alias>.transport.ping_scheduleĐộng, đơn vị thời gianĐặt khoảng thời gian để gửi các tin nhắn ping cấp ứng dụng nhằm duy trì kết nối với một cụm từ xa cụ thể. Mặc định là -1 (tắt).
cluster.remote.<cluster_alias>.seedsĐộng, danh sáchChỉ chế độ Sniff. Chỉ định danh sách các nút seed được sử dụng để khám phá cấu trúc cụm từ xa.
cluster.remote.<cluster_alias>.node_connectionsĐộng, số nguyênChỉ chế độ Sniff. Đặt số lượng nút gateway để duy trì các kết nối hoạt động trong cụm từ xa. Mặc định là 3.
cluster.remote.node.attrTĩnh, chuỗiChỉ chế độ Sniff. Chỉ định một thuộc tính nút để lọc các nút đủ điều kiện làm nút gateway trong các cụm từ xa.
cluster.remote.<cluster_alias>.proxy_addressĐộng, chuỗiChỉ chế độ Proxy. Chỉ định địa chỉ máy chủ proxy để kết nối với cụm từ xa.
cluster.remote.<cluster_alias>.proxy_socket_connectionsĐộng, số nguyênChỉ chế độ Proxy. Đặt số lượng kết nối socket để mở đến máy chủ proxy. Mặc định là 18.
cluster.remote.<cluster_alias>.server_nameĐộng, chuỗiChỉ chế độ Proxy. Chỉ định tên máy chủ được gửi trong phần mở rộng TLS Server Name Indication (SNI).

Index settings

Cài đặt chỉ mục có thể có hai loại: cài đặt cấp cụm ảnh hưởng đến tất cả chỉ mục trong cụm và cài đặt cấp chỉ mục ảnh hưởng đến từng chỉ mục. Để tìm hiểu thêm về cài đặt tĩnh và động, hãy xem phần Cấu hình BlackHole.

Cluster-level index settings

Có hai loại thiết lập cụm:
  • Static cluster-level index settings là cài đặt bạn không thể cập nhật khi cụm đang chạy. Để cập nhật cài đặt tĩnh, bạn phải dừng cụm, cập nhật cài đặt và sau đó khởi động lại cụm.
  • Dynamic cluster-level index settings là những thiết lập mà bạn có thể cập nhật bất cứ lúc nào.
Static cluster-level index settings
BlackHole hỗ trợ các thiết lập static cluster-level index:
Cài đặtLoạiMô tả
indices.cache.cleanup_intervalĐơn vị thời gianLên lịch một tác vụ nền định kỳ để dọn dẹp các mục nhập đã hết hạn khỏi bộ nhớ đệm theo khoảng thời gian được chỉ định. Mặc định là 1m (1 phút).
indices.requests.cache.sizeChuỗiKích thước bộ nhớ đệm dưới dạng phần trăm của kích thước heap. Mặc định là 1%.
indices.analysis.hunspell.dictionary.ignore_caseTĩnh, BooleanKiểm soát liệu việc khớp từ điển Hunspell có bỏ qua phân biệt chữ hoa chữ thường trên toàn cầu cho tất cả các ngôn ngữ hay không.
indices.analysis.hunspell.dictionary.lazyTĩnh, BooleanKiểm soát khi nào các từ điển Hunspell được tải. Nếu true, việc tải từ điển được hoãn lại cho đến khi một từ điển thực sự được sử dụng. Mặc định là false.
indices.memory.index_buffer_sizeTĩnh, chuỗiKiểm soát lượng bộ nhớ heap được phân bổ cho các hoạt động lập chỉ mục trên tất cả các phân đoạn trên một nút. Chấp nhận phần trăm (như 10%) hoặc giá trị kích thước byte (như 512mb). Mặc định là 10% của tổng heap.
indices.memory.min_index_buffer_sizeTĩnh, đơn vị byteĐặt kích thước tối thiểu tuyệt đối cho bộ đệm lập chỉ mục. Mặc định là 48mb.
indices.memory.max_index_buffer_sizeTĩnh, đơn vị byteĐặt kích thước tối đa tuyệt đối cho bộ đệm lập chỉ mục. Mặc định là không giới hạn (không có giới hạn).
indices.queries.cache.sizeTĩnh, chuỗiKiểm soát kích thước bộ nhớ được phân bổ cho bộ nhớ đệm truy vấn (bộ nhớ đệm bộ lọc) trên mỗi nút dữ liệu. Mặc định là 10% của bộ nhớ heap.
Dynamic cluster-level index settings
BlackHole hỗ trợ các thiết lập chỉ mục cấp cụm động sau:
Cài đặtLoạiMô tả
action.auto_create_indexBooleanTự động tạo chỉ mục nếu chỉ mục chưa tồn tại. Cũng áp dụng bất kỳ mẫu chỉ mục nào được cấu hình. Mặc định là true.
action.destructive_requires_nameBooleanKhi true, bạn phải chỉ định tên chỉ mục để xóa chỉ mục. Bạn không thể xóa tất cả các chỉ mục hoặc sử dụng ký tự đại diện. Mặc định là false.
cluster.default.index.refresh_intervalĐơn vị thời gianĐặt khoảng thời gian làm mới khi cài đặt index.refresh_interval không được cung cấp.
cluster.minimum.index.refresh_intervalĐơn vị thời gianĐặt khoảng thời gian làm mới tối thiểu và áp dụng cho tất cả các chỉ mục trong cụm.
cluster.indices.close.enableBooleanCho phép đóng các chỉ mục đang mở trong BlackHole. Mặc định là true.
indices.recovery.max_bytes_per_secChuỗiGiới hạn tổng lưu lượng phục hồi đến và đi cho mỗi nút. Mặc định là 40mb.
indices.recovery.max_concurrent_file_chunksSố nguyênSố lượng khối tệp được gửi song song cho mỗi hoạt động phục hồi. Mặc định là 2.
indices.recovery.max_concurrent_remote_store_streamsSố nguyênSố lượng luồng đến kho lưu trữ từ xa có thể được mở song song khi phục hồi chỉ mục kho lưu trữ từ xa. Mặc định là 20.
indices.replication.max_bytes_per_secChuỗiGiới hạn tổng lưu lượng sao chép đến và đi cho mỗi nút. Mặc định là 40mb.
indices.fielddata.cache.sizeChuỗiKích thước tối đa của bộ nhớ đệm dữ liệu trường. Có thể được chỉ định dưới dạng giá trị tuyệt đối (ví dụ: 8GB) hoặc phần trăm của heap nút (ví dụ: 50%). Mặc định là 35%.
indices.query.bool.max_clause_countSố nguyênXác định tích tối đa của các trường và thuật ngữ có thể truy vấn đồng thời. Mặc định là 1024.
cluster.remote_store.index.path.typeChuỗiChiến lược đường dẫn cho dữ liệu được lưu trữ trong kho lưu trữ từ xa. Giá trị hợp lệ: fixed (mặc định), hashed_prefix, hashed_infix.
cluster.remote_store.index.path.hash_algorithmChuỗiHàm băm được sử dụng để tạo giá trị băm. Giá trị hợp lệ: fnv_1a_base64, fnv_1a_composite_1 (mặc định).
cluster.remote_store.translog.transfer_timeoutĐơn vị thời gianKiểm soát giá trị thời gian chờ khi tải lên các tệp translog và checkpoint. Mặc định là 30s.
cluster.remote_store.index.segment_metadata.retention.max_countSố nguyênKiểm soát số lượng tối thiểu các tệp siêu dữ liệu cần giữ trong kho lưu trữ phân đoạn. Mặc định là 10.
cluster.remote_store.segment.transfer_timeoutĐơn vị thời gianKiểm soát khoảng thời gian tối đa để chờ tất cả các phân đoạn mới cập nhật sau khi làm mới. Mặc định là 30m.
cluster.remote_store.translog.path.prefixChuỗiKiểm soát tiền tố đường dẫn cố định cho dữ liệu translog. Mặc định là "".
cluster.remote_store.segments.path.prefixChuỗiKiểm soát tiền tố đường dẫn cố định cho dữ liệu phân đoạn. Mặc định là "".
cluster.snapshot.shard.path.prefixChuỗiKiểm soát tiền tố đường dẫn cố định cho các blob cấp phân đoạn snapshot. Mặc định là "".
cluster.default_number_of_replicasSố nguyênKiểm soát số lượng bản sao mặc định cho các chỉ mục trong cụm. Mặc định là 1.
cluster.thread_pool.<fixed-threadpool>.sizeSố nguyênKiểm soát kích thước của cả nhóm luồng hàng đợi cố định và có thể thay đổi kích thước.
cluster.thread_pool.<scaling-threadpool>.maxSố nguyênĐặt kích thước tối đa của nhóm luồng mở rộng.
cluster.thread_pool.<scaling-threadpool>.coreSố nguyênChỉ định kích thước lõi của nhóm luồng mở rộng.
Trước khi điều chỉnh cài đặt nhóm luồng động, lưu ý rằng đây là những cài đặt cấp chuyên gia có khả năng gây mất ổn định cụm của bạn. Việc thay đổi cài đặt nhóm luồng sẽ áp dụng cùng một kích thước nhóm luồng cho tất cả các nút, do đó không khuyến nghị sử dụng cho các cụm có phần cứng khác nhau cho cùng một vai trò. Sau khi thực hiện những thay đổi này, hãy theo dõi cụm của bạn để đảm bảo cụm vẫn ổn định và hoạt động như mong đợi.
Updating dynamic cluster settings
Để tìm hiểu cách cập nhật cài đặt động, hãy xem Cập nhật cluster settings using the API.

Index-level index settings

Bạn có thể chỉ định cài đặt chỉ mục khi tạo chỉ mục. Có hai loại cài đặt chỉ mục:
  • Static index-level index settings là cài đặt bạn không thể cập nhật khi chỉ mục đang mở. Để cập nhật cài đặt tĩnh, bạn phải đóng chỉ mục, cập nhật cài đặt, rồi mở lại chỉ mục.
  • Dynamic index-level index settings là cài đặt bạn có thể cập nhật bất cứ lúc nào.

Specifying a setting when creating an index

Khi tạo chỉ mục, bạn có thể chỉ định cài đặt tĩnh hoặc động như sau:
PUT /testindex
{
  "settings": {
    "index.number_of_shards": 1,
    "index.number_of_replicas": 2
  }
}

Static index-level index settings

BlackHole hỗ trợ các thiết lập chỉ mục cấp độ tĩnh sau:
  • index.number_of_shards (Số nguyên): Số lượng phân đoạn chính trong index. Mặc định là 1.
  • index.number_of_routing_shards (Số nguyên): Số lượng phân đoạn định tuyến được sử dụng để chia một chỉ mục.
  • index.shard.check_on_startup (Boolean): Có nên kiểm tra các phân đoạn của chỉ mục xem có bị hỏng không. Các tùy chọn có sẵn là false (không kiểm tra hỏng), checksum (kiểm tra hỏng vật lý) và true (kiểm tra hỏng cả vật lý và logic). Mặc định là false.
  • index.codec (Chuỗi): Xác định cách các trường được lưu trữ của chỉ mục được nén và lưu trên đĩa. Cài đặt này ảnh hưởng đến kích thước của các phân đoạn chỉ mục và hiệu suất của các hoạt động chỉ mục. Các giá trị hợp lệ là: - default - best_compression - zstd (BlackHole 2.9 trở lên) - zstd_no_dict (BlackHole 2.9 trở lên) - qat_lz4 (BlackHole 2.14 trở lên, trên các hệ thống được hỗ trợ) - qat_deflate (BlackHole 2.14 trở lên, trên các hệ thống được hỗ trợ) Đối với zstd, zstd_no_dict, qat_lz4 và qat_deflate, bạn có thể chỉ định mức nén trong thiết lập index.codec.compression_level. Để biết thêm thông tin, hãy xem Thiết lập codec Index. Tùy chọn. Mặc định là mặc định. - index.codec.compression_level (Số nguyên): Thiết lập mức nén cung cấp sự cân bằng giữa tỷ lệ nén và tốc độ. Mức nén cao hơn dẫn đến tỷ lệ nén cao hơn (dung lượng lưu trữ nhỏ hơn), nhưng tốc độ nén và giải nén chậm hơn dẫn đến độ trễ lập chỉ mục và tìm kiếm cao hơn. Thiết lập này chỉ có thể được chỉ định nếu index.codec được đặt thành zstd và zstd_no_dict trong BlackHole 2.9 trở lên hoặc qat_lz4 và qat_deflate trong BlackHole 2.14 trở lên. Các giá trị hợp lệ là các số nguyên trong phạm vi [1, 6]. Để biết thêm thông tin, hãy xem Thiết lập codec Chỉ mục. Tùy chọn. Mặc định là 3. - index.codec.qatmode (Chuỗi): Chế độ tăng tốc phần cứng được sử dụng cho codec nén qat_lz4 và qat_deflate. Các giá trị hợp lệ là auto và hardware. Để biết thêm thông tin, hãy xem Cài đặt codec Index. Tùy chọn. Mặc định là auto. - index.routing_partition_size (Số nguyên): Số lượng phân đoạn mà một giá trị định tuyến tùy chỉnh có thể đến. Định tuyến giúp cân bằng cụm bằng cách phân bổ giá trị đến một tập hợp con các phân đoạn thay vì một phân đoạn duy nhất. Để bật định tuyến, đặt giá trị này lớn hơn 1 nhưng nhỏ hơn index.number_of_shards. Mặc định là 1. - index.soft_deletes.retention_lease.period (Đơn vị thời gian): Khoảng thời gian tối đa để lưu giữ lịch sử hoạt động của một phân đoạn. Mặc định là 12 giờ. - index.sort.field (Chuỗi): Chỉ định trường được sử dụng để sắp xếp tài liệu tại thời điểm lập chỉ mục. Thứ tự sắp xếp mặc định là asc (tăng dần). Để thay đổi thứ tự, hãy đặt tham số index.sort.order - index.sort.order (Chuỗi): Chỉ định thứ tự sắp xếp tài liệu tại thời điểm lập chỉ mục. Các giá trị hợp lệ là asc (tăng dần) và desc (giảm dần). Mặc định là asc. Thiết lập này yêu cầu index.sort.field cũng phải được thiết lập. - index.sort.mode (Chuỗi): Kiểm soát cách xử lý các trường đa giá trị trong quá trình sắp xếp. Các giá trị hợp lệ là min (sử dụng giá trị thấp nhất) và max (sử dụng giá trị cao nhất). - index.sort.missing (Chuỗi): Xác định cách xử lý các tài liệu không có trường sắp xếp. Các giá trị hợp lệ là _last (đặt các tài liệu không có trường sắp xếp ở cuối) và _first (đặt các tài liệu không có trường sắp xếp ở đầu). - index.load_fixed_bitset_filters_eagerly (Boolean): Liệu BlackHole có nên tải trước các bộ lọc được lưu trong bộ nhớ đệm hay không. Các tùy chọn khả dụng là đúng (true) và sai (false). Mặc định là đúng (true). - index.hidden (Boolean): Có nên ẩn chỉ mục hay không. Chỉ mục ẩn không được trả về trong các truy vấn có ký tự đại diện. Các tùy chọn có sẵn là true và false. Mặc định là false. - index.merge.policy (Chuỗi): Thiết lập này kiểm soát chính sách hợp nhất cho các phân đoạn Lucene. Các tùy chọn khả dụng là tiered và log_byte_size. Mặc định là tiered, nhưng đối với dữ liệu chuỗi thời gian, chẳng hạn như sự kiện nhật ký, chúng tôi khuyên bạn nên sử dụng chính sách hợp nhất log_byte_size, điều này có thể cải thiện hiệu suất truy vấn khi thực hiện truy vấn phạm vi trên trường @timestamp. Chúng tôi khuyên bạn không nên thay đổi chính sách hợp nhất của chỉ mục hiện có. Thay vào đó, hãy cấu hình thiết lập này khi tạo chỉ mục mới. - index.merge_on_flush.enabled (Boolean): Thiết lập này kiểm soát tính năng hợp nhất khi làm mới của Apache Lucene nhằm mục đích giảm số lượng phân đoạn bằng cách thực hiện hợp nhất khi làm mới (hoặc theo thuật ngữ của BlackHole, khi xả). Mặc định là đúng. - index.merge_on_flush.max_full_flush_merge_wait_time (Đơn vị thời gian): Thiết lập này đặt khoảng thời gian chờ hợp nhất khi index.merge_on_flush.enabled được bật. Mặc định là 10 giây. - index.merge_on_flush.policy (mặc định | merge-on-flush): Cài đặt này kiểm soát chính sách hợp nhất nào sẽ được sử dụng khi index.merge_on_flush.enabled được bật. Mặc định là default. - index.check_pending_flush.enabled (Boolean): Thiết lập này kiểm soát thiết lập trình ghi chỉ mục checkPendingFlushOnUpdate của Apache Lucene, thiết lập này chỉ định liệu một luồng lập chỉ mục có nên kiểm tra các lệnh xóa đang chờ xử lý khi cập nhật hay không để xóa bộ đệm lập chỉ mục vào đĩa. Mặc định là đúng. - index.use_compound_file (Boolean): Thiết lập này kiểm soát các thiết lập của trình ghi chỉ mục useCompoundFile của Apache Lucene, thiết lập này chỉ định liệu các tệp phân đoạn mới ghi có được đóng gói vào một tệp hợp nhất hay không. Mặc định là đúng. - index.append_only.enabled (Boolean): Đặt thành true để ngăn chặn mọi cập nhật cho tài liệu trong chỉ mục. Mặc định là false - index.derived_source.enabled (Boolean): Đặt thành true để tạo nguồn động mà không lưu trữ rõ ràng trường _source, điều này có thể tối ưu hóa lưu trữ. Mặc định là false. Để biết thêm thông tin, hãy xem Nguồn phái sinh.

Updating a static index setting

Bạn chỉ có thể cập nhật cài đặt chỉ mục tĩnh trên một chỉ mục đã đóng. Ví dụ sau minh họa cách cập nhật cài đặt index codec. Đầu tiên, đóng một index:
POST /testindex/_close
Sau đó, cập nhật cài đặt bằng cách gửi yêu cầu đến endpoint _settings:
PUT /testindex/_settings
{
  "index": {
    "codec": "zstd_no_dict",
    "codec.compression_level": 3
  }
}
Cuối cùng, mở lại chỉ mục để kích hoạt các thao tác đọc và ghi:
POST /testindex/_open
Để biết thêm thông tin về việc cập nhật cài đặt, bao gồm các tham số truy vấn được hỗ trợ, hãy xem Cập nhật cài đặt. BlackHole hỗ trợ các thiết lập chỉ mục cấp độ chỉ mục động sau:
- index.number_of_replicas (Số nguyên): Số lượng phân đoạn bản sao mà mỗi phân đoạn chính nên có. Ví dụ, nếu bạn có 4 phân đoạn chính và đặt index.number_of_replicas là 3, chỉ mục sẽ có 12 phân đoạn bản sao. Nếu không được đặt, mặc định là cluster.default_number_of_replicas (mặc định là 1).
- index.number_of_search_replicas (Số nguyên): Số lượng phân đoạn bản sao tìm kiếm mà mỗi phân đoạn chính nên có. Ví dụ, nếu bạn có 4 phân đoạn chính và đặt index.number_of_search_replicas là 3, chỉ mục sẽ có 12 phân đoạn bản sao tìm kiếm. Mặc định là 0.
- index.auto_expand_replicas (Chuỗi): Xác định liệu cụm có nên tự động thêm phân đoạn bản sao dựa trên số lượng nút dữ liệu hay không. Chỉ định giới hạn dưới và giới hạn trên (ví dụ: 0–9) hoặc all cho giới hạn trên. Ví dụ, nếu bạn có 5 nút dữ liệu và đặt index.auto_expand_replicas là 0–3, thì cụm không tự động thêm phân đoạn bản sao khác. Tuy nhiên, nếu bạn đặt giá trị này là 0-all và thêm 2 nút nữa, tổng cộng là 7, cụm sẽ mở rộng thành 6 phân đoạn bản sao. Mặc định là tắt.
- index.auto_expand_search_replicas (Chuỗi): Kiểm soát liệu cụm có tự động điều chỉnh số lượng phân đoạn bản sao tìm kiếm dựa trên số lượng nút tìm kiếm có sẵn hay không. Chỉ định giá trị dưới dạng phạm vi với giới hạn dưới và trên, ví dụ: 0-3 hoặc 0-all. Nếu bạn không chỉ định giá trị, tính năng này sẽ bị tắt.
Ví dụ, nếu bạn có 5 nút dữ liệu và thiết lập index.auto_expand_search_replicas thành 0-3, chỉ mục có thể có tối đa 3 bản sao tìm kiếm và cụm không tự động thêm phân đoạn bản sao tìm kiếm khác Tuy nhiên, nếu bạn đặt index.auto_expand_search_replicas thành 0-all và thêm 2 nút nữa, tổng cộng là 7, cụm sẽ mở rộng thành 7 phân đoạn bản sao tìm kiếm. Cài đặt này bị tắt theo mặc định.
  • index.blocks.write (Boolean): Chỉ định liệu chỉ mục có phải là chỉ đọc hay không. Đặt thành true sẽ chặn tất cả các yêu cầu ghi và chuyển chỉ mục sang chế độ chỉ đọc. Mặc định là false
  • index.search.idle.after (Đơn vị thời gian): Khoảng thời gian một phân đoạn phải chờ để tìm kiếm hoặc nhận yêu cầu cho đến khi nó trở nên nhàn rỗi. Mặc định là 30 giây.
  • index.search.default_pipeline (Chuỗi): Tên của đường ống tìm kiếm được sử dụng nếu không có đường ống nào được thiết lập rõ ràng khi tìm kiếm chỉ mục. Nếu đường ống mặc định được thiết lập và đường ống đó không tồn tại, các yêu cầu chỉ mục sẽ không thành công. Sử dụng tên đường ống _none để chỉ định không có đường ống tìm kiếm mặc định. Để biết thêm thông tin, hãy xem Đường ống tìm kiếm mặc định.
  • index.refresh_interval (Đơn vị thời gian): Tần suất làm mới chỉ mục, giúp xuất bản các thay đổi gần đây nhất và cho phép tìm kiếm. Có thể đặt thành -1 để tắt tính năng làm mới. Mặc định là 1s.
  • index.refresh_interval (Đơn vị thời gian): Tần suất làm mới chỉ mục, giúp xuất bản các thay đổi gần đây nhất và cho phép tìm kiếm. Có thể đặt thành -1 để tắt tính năng làm mới. Mặc định là 1 giây.
  • index.max_inner_result_window (Số nguyên): Giá trị tối đa của from + size, chỉ định số lượng kết quả tìm kiếm lồng nhau được trả về và tài liệu có liên quan nhất được tổng hợp trong quá trình truy vấn. from là chỉ mục bắt đầu để tìm kiếm, và size là số lượng kết quả hàng đầu được trả về. Mặc định là 100.
  • index.max_inner_result_window (Số nguyên): Giá trị tối đa của from + size, chỉ định số lượng kết quả tìm kiếm lồng nhau được trả về và tài liệu có liên quan nhất được tổng hợp trong quá trình truy vấn. from là chỉ mục bắt đầu để tìm kiếm, và size là số lượng kết quả hàng đầu được trả về. Mặc định là 100.
  • index.max_docvalue_fields_search (Số nguyên): Số lượng docvalue_fields tối đa được phép trong một truy vấn. Mặc định là 100.
  • index.max_docvalue_fields_search (Số nguyên): Số lượng docvalue_field tối đa được phép trong một truy vấn. Mặc định là 100.
  • index.max_ngram_diff (Số nguyên): Chênh lệch tối đa giữa giá trị min_gram và max_gram của NGramTokenizer và NGramTokenFilter. Mặc định là 1.
  • index.max_shingle_diff (Số nguyên): Chênh lệch tối đa giữa max_shingle_size và min_shingle_size để đưa vào bộ lọc mã thông báo shingle. Mặc định là 3.
  • index.max_refresh_listeners (Số nguyên): Số lượng trình lắng nghe làm mới tối đa mà mỗi phân đoạn được phép có.
  • index.analyze.max_token_count (Số nguyên): Số lượng token tối đa có thể được trả về từ thao tác API _analyze. Mặc định là 10000.
  • index.highlight.max_analyzed_offset (Số nguyên): Số ký tự mà yêu cầu tô sáng có thể phân tích. Mặc định là 1000000.
  • index.max_terms_count (Số nguyên): Số lượng thuật ngữ tối đa mà truy vấn thuật ngữ có thể chấp nhận. Mặc định là 65536.
  • index.max_regex_length (Số nguyên): Độ dài ký tự tối đa của regex có thể có trong một truy vấn regexp. Mặc định là 1000.
  • index.query.default_field (Danh sách): Một trường hoặc danh sách các trường mà BlackHole sử dụng trong các truy vấn trong trường hợp một trường không được chỉ định trong các tham số.
  • index.query.max_nested_depth (Số nguyên): Số lượng cấp độ lồng nhau tối đa cho các truy vấn lồng nhau. Mặc định là 20. Tối thiểu là 1 (truy vấn lồng nhau đơn).
  • index.requests.cache.enable (Boolean): Bật hoặc tắt bộ đệm yêu cầu chỉ mục. Mặc định là đúng. Để biết thêm thông tin, hãy xem mục Bộ đệm yêu cầu chỉ mục.
  • index.routing.allocation.enable (Chuỗi): Chỉ định các tùy chọn cho việc phân bổ phân mảnh của chỉ mục. Các tùy chọn khả dụng là all (cho phép phân bổ cho tất cả các phân mảnh), primary (chỉ cho phép phân bổ cho các phân mảnh chính), new_primaries (chỉ cho phép phân bổ cho các phân mảnh chính mới) và none (không cho phép phân bổ). Mặc định là all.
  • index.routing.rebalance.enable (Chuỗi): Cho phép cân bằng lại phân mảnh cho chỉ mục. Các tùy chọn khả dụng là all (cho phép cân bằng lại tất cả các phân mảnh), primary (chỉ cho phép cân bằng lại các phân mảnh chính), replicas (chỉ cho phép cân bằng lại các bản sao) và none (không cho phép cân bằng lại). Mặc định là all.
  • index.gc_deletes (Đơn vị thời gian): Khoảng thời gian lưu giữ số phiên bản của tài liệu đã xóa. Mặc định là 60 giây.
  • index.default_pipeline (Chuỗi): Đường ống nút ingest mặc định cho chỉ mục. Nếu đường ống mặc định được đặt và đường ống không tồn tại, các yêu cầu chỉ mục sẽ không thành công. Tên đường ống _none chỉ định rằng chỉ mục không có đường ống ingest.
  • index.final_pipeline (Chuỗi): Đường ống nút ingest cuối cùng cho chỉ mục. Nếu đường ống cuối cùng được thiết lập và đường ống không tồn tại, các yêu cầu chỉ mục sẽ không thành công. Tên đường ống _none chỉ định rằng chỉ mục không có đường ống ingest.
  • index.optimize_doc_id_lookup.fuzzy_set.enabled (Boolean): Thiết lập này kiểm soát việc có nên bật fuzzy_set hay không để tối ưu hóa việc tra cứu ID tài liệu trong các lệnh lập chỉ mục hoặc tìm kiếm bằng cách sử dụng một cấu trúc dữ liệu bổ sung, trong trường hợp này là cấu trúc dữ liệu bộ lọc Bloom. Việc bật thiết lập này sẽ cải thiện hiệu suất cho các thao tác upsert và tìm kiếm dựa trên ID tài liệu bằng cách tạo một cấu trúc dữ liệu mới (bộ lọc Bloom). Bộ lọc Bloom cho phép xử lý các trường hợp tiêu cực (tức là ID không có trong chỉ mục hiện tại) thông qua việc tra cứu ngoài heap nhanh hơn. Lưu ý rằng việc tạo bộ lọc Bloom yêu cầu sử dụng heap bổ sung trong thời gian lập chỉ mục. Mặc định là false.
  • index.optimize_doc_id_lookup.fuzzy_set.false_positive_probability (Double): Thiết lập xác suất dương tính giả cho fuzzy_set cơ sở (tức là bộ lọc Bloom). Xác suất dương tính giả thấp hơn đảm bảo thông lượng cao hơn cho các thao tác upsert và get, nhưng lại làm tăng dung lượng lưu trữ và sử dụng bộ nhớ. Giá trị được phép nằm trong khoảng từ 0,01 đến 0,50. Mặc định là 0,20.
  • index.routing.allocation.total_shards_per_node (Số nguyên): Tổng số phân mảnh chính và phân mảnh bản sao tối đa từ một chỉ mục duy nhất có thể được phân bổ cho một nút duy nhất. Mặc định là -1 (không giới hạn). Giúp kiểm soát việc phân phối phân mảnh theo chỉ mục trên các nút bằng cách giới hạn số lượng phân mảnh trên mỗi nút. Hãy cẩn thận khi sử dụng vì các phân mảnh từ chỉ mục này có thể vẫn chưa được phân bổ nếu các nút đạt đến giới hạn đã cấu hình.
  • index.routing.allocation.total_primary_shards_per_node (Số nguyên): Số lượng phân mảnh chính tối đa từ một chỉ mục duy nhất có thể được phân bổ cho một nút duy nhất. Thiết lập này chỉ áp dụng cho các cụm được hỗ trợ từ xa. Mặc định là -1 (không giới hạn). Giúp kiểm soát việc phân bổ phân mảnh chính theo chỉ mục trên các nút bằng cách giới hạn số lượng phân mảnh chính trên mỗi nút. Hãy cẩn thận khi sử dụng vì các phân mảnh chính từ chỉ mục này có thể vẫn chưa được phân bổ nếu các nút đạt đến giới hạn đã cấu hình.
  • index.derived_source.translog.enabled (Boolean): Kiểm soát cách tài liệu được đọc từ translog cho một chỉ mục có bật nguồn dẫn xuất. Giá trị mặc định là index.derived_source.enabled. Để biết thêm thông tin, xem Nguồn dẫn xuất.

Updating a dynamic index setting

Bạn có thể cập nhật cài đặt chỉ mục động bất kỳ lúc nào thông qua API. Ví dụ: để cập nhật khoảng thời gian làm mới, hãy sử dụng yêu cầu sau:
PUT /testindex/_settings
{
  "index": {
    "refresh_interval": "2s"
  }
}
Để biết thêm thông tin về việc cập nhật cài đặt, bao gồm các tham số truy vấn được hỗ trợ, hãy xem Cập nhật cài đặt.

Search settings

BlackHole hỗ trợ các cài đặt tìm kiếm sau:
  • search.max_buckets (Động, số nguyên): Số lượng thùng tổng hợp tối đa được phép trong một phản hồi. Mặc định là 65535.
  • search.phase_took_enabled (Động, Boolean): Cho phép trả về giá trị thời gian thực hiện ở cấp độ pha trong phản hồi tìm kiếm. Mặc định là false.
  • search.allow_expensive_queries (Động, Boolean): Cho phép hoặc không cho phép các truy vấn đắt tiền. Để biết thêm thông tin, hãy xem Truy vấn đắt tiền.
  • search.default_allow_partial_results (Động, Boolean): Thiết lập cấp cụm cho phép trả về kết quả tìm kiếm một phần nếu yêu cầu hết thời gian chờ hoặc phân đoạn bị lỗi. Nếu yêu cầu tìm kiếm chứa tham số allow_partial_search_results, tham số này sẽ được ưu tiên hơn thiết lập này. Mặc định là true.
  • search.cancel_after_time_interval (Động, đơn vị thời gian): Cài đặt cấp cụm, thiết lập thời gian chờ mặc định cho tất cả các yêu cầu tìm kiếm ở cấp nút điều phối. Sau khi đạt đến thời gian chỉ định, yêu cầu sẽ dừng và tất cả các tác vụ liên quan sẽ bị hủy. Mặc định là -1 (không có thời gian chờ).
  • search.default_search_timeout (Động, đơn vị thời gian): Thiết lập cấp cụm, chỉ định khoảng thời gian tối đa mà một yêu cầu tìm kiếm có thể chạy trước khi yêu cầu bị hủy ở cấp phân đoạn. Nếu khoảng thời gian chờ được chỉ định trong yêu cầu tìm kiếm, khoảng thời gian đó sẽ được ưu tiên hơn thiết lập đã cấu hình. Mặc định là -1.
  • search.default_keep_alive (Động, đơn vị thời gian): Chỉ định giá trị duy trì kết nối mặc định cho các tìm kiếm cuộn và Điểm trong Thời gian (PIT). Vì một yêu cầu có thể đến một phân đoạn nhiều lần (ví dụ: trong các giai đoạn truy vấn và tìm nạp), BlackHole mở một ngữ cảnh yêu cầu tồn tại trong toàn bộ thời gian của yêu cầu để đảm bảo tính nhất quán của trạng thái phân đoạn cho từng yêu cầu phân đoạn riêng lẻ. Trong tìm kiếm tiêu chuẩn, sau khi giai đoạn tìm nạp hoàn tất, ngữ cảnh yêu cầu sẽ bị đóng. Đối với tìm kiếm cuộn hoặc tìm kiếm PIT, BlackHole giữ ngữ cảnh yêu cầu mở cho đến khi được đóng rõ ràng (hoặc cho đến khi đạt đến thời gian duy trì kết nối). Một luồng nền sẽ định kỳ kiểm tra tất cả các ngữ cảnh cuộn và PIT đang mở và xóa những ngữ cảnh đã vượt quá thời gian chờ duy trì kết nối. Thiết lập search.keep_alive_interval chỉ định tần suất các ngữ cảnh được kiểm tra xem có hết hạn hay không. Thiết lập search.default_keep_alive là thời hạn mặc định cho việc hết hạn. Một yêu cầu cuộn hoặc PIT có thể chỉ định rõ ràng việc duy trì kết nối, điều này sẽ được ưu tiên hơn thiết lập này. Mặc định là 5 phút.
  • search.keep_alive_interval (Tĩnh, đơn vị thời gian): Xác định khoảng thời gian mà BlackHole kiểm tra các ngữ cảnh yêu cầu đã vượt quá giới hạn duy trì trạng thái hoạt động. Mặc định là 1 phút.
  • search.max_keep_alive (Động, đơn vị thời gian): Chỉ định giá trị duy trì trạng thái hoạt động tối đa. Thiết lập max_keep_alive được sử dụng để kiểm tra an toàn với các thiết lập keep_alive khác (ví dụ: default_keep_alive) và các thiết lập duy trì trạng thái hoạt động ở cấp độ yêu cầu (cho ngữ cảnh cuộn và PIT). Nếu một yêu cầu vượt quá giá trị max_keep_alive trong cả hai trường hợp, thao tác sẽ thất bại. Mặc định là 24h.
  • search.low_level_cancellation (Động, Boolean): Cho phép hủy yêu cầu cấp thấp. Cơ chế timeout cổ điển của Lucene chỉ kiểm tra thời gian trong khi thu thập kết quả tìm kiếm. Tuy nhiên, một truy vấn tốn kém, chẳng hạn như ký tự đại diện hoặc tiền tố, có thể mất nhiều thời gian để mở rộng trước khi bắt đầu thu thập kết quả. Trong trường hợp này, truy vấn có thể chạy trong một khoảng thời gian dài hơn giá trị timeout. Cơ chế hủy cấp thấp giải quyết tình huống này bằng cách timeout không chỉ trong khi thu thập kết quả tìm kiếm mà còn trong giai đoạn mở rộng truy vấn hoặc trước khi thực hiện bất kỳ thao tác nào của Lucene. Mặc định là true.
  • search.max_open_scroll_context (Động, số nguyên): Thiết lập cấp nút chỉ định số lượng ngữ cảnh cuộn mở tối đa cho nút. Mặc định là 500.
  • search.request_stats_enabled (Động, Boolean): Bật tính năng thu thập thống kê thời gian pha ở cấp độ nút từ góc nhìn của nút điều phối. Thống kê ở cấp độ yêu cầu theo dõi thời gian (tổng cộng) các yêu cầu tìm kiếm trong từng giai đoạn tìm kiếm khác nhau. Bạn có thể truy xuất các bộ đếm này bằng API Thống kê Nút. Mặc định là false
  • search.highlight.term_vector_multi_value (Tĩnh, Boolean): Chỉ định làm nổi bật các đoạn mã trên các giá trị của một trường đa giá trị. Mặc định là đúng
  • search.max_aggregation_rewrite_filters (Động, số nguyên): Xác định số lượng bộ lọc ghi đè tối đa được phép trong quá trình tổng hợp. Đặt giá trị này thành 0 để tắt tính năng tối ưu hóa ghi đè bộ lọc cho các quá trình tổng hợp. Đây là tính năng thử nghiệm và có thể thay đổi hoặc bị loại bỏ trong các phiên bản tương lai.
  • search.dynamic_pruning.cardinality_aggregation.max_allowed_cardinality (Động, số nguyên): Xác định ngưỡng áp dụng cắt tỉa động trong tổng hợp số lượng. Nếu số lượng của một trường vượt quá ngưỡng này, quá trình tổng hợp sẽ trở về phương thức mặc định. Đây là tính năng thử nghiệm và có thể thay đổi hoặc bị loại bỏ trong các phiên bản sau.
  • search.keyword_index_or_doc_values_enabled (Động, Boolean): Xác định xem có nên sử dụng giá trị index hay doc khi chạy truy vấn multi_term trên các trường từ khóa hay không. Giá trị mặc định là false

Scripting settings

BlackHole hỗ trợ các cài đặt tập lệnh sau:
  • script.max_size_in_bytes (Động, đơn vị byte): Kiểm soát kích thước byte tối đa được phép của tập lệnh. Thiết lập này giúp ngăn ngừa các vấn đề về bộ nhớ bằng cách từ chối các tập lệnh lớn hơn giới hạn này. Mặc định là 65536 (64 KB).
  • script.cache.max_size (Tĩnh, số nguyên): Đặt số lượng tối đa các tập lệnh đã biên dịch có thể được lưu trong bộ nhớ đệm. Bộ nhớ đệm tập lệnh lưu trữ các tập lệnh đã biên dịch để tránh chi phí biên dịch lại cho các tập lệnh thường xuyên được sử dụng. Khi bộ nhớ đệm đạt đến giới hạn này, các tập lệnh ít được sử dụng gần đây nhất sẽ bị loại bỏ để nhường chỗ cho các tập lệnh mới. Tăng giá trị này có thể cải thiện hiệu suất cho các ứng dụng sử dụng nhiều tập lệnh khác nhau nhưng sẽ tiêu tốn nhiều bộ nhớ hơn. Mặc định là 100.

Point in Time settings

Để biết thông tin về cài đặt PIT, hãy xem Cài đặt PIT. Để tìm hiểu thêm về cài đặt tĩnh và động, hãy xem phần Cấu hình BlackHole.

Availability and recovery settings

Cài đặt khả dụng và phục hồi bao gồm các cài đặt sau:
  • General recovery settings
  • Snapshots
  • Cluster manager task throttling
  • Remote-backed storage
  • Search backpressure
  • Shard indexing backpressure
  • Segment replication
  • Cross-cluster replication
Để tìm hiểu thêm về cài đặt tĩnh và động, hãy xem phần Cấu hình BlackHole.

General recovery settings

  • BlackHole hỗ trợ các thiết lập phục hồi chung sau: indices.recovery.chunk_size (Động, đơn vị byte): Kiểm soát kích thước khối được sử dụng khi truyền dữ liệu trong quá trình khôi phục chỉ mục. Thiết lập này ảnh hưởng đến lượng dữ liệu được truyền trong mỗi yêu cầu mạng trong quá trình khôi phục phân đoạn. Kích thước khối lớn hơn có thể cải thiện tốc độ khôi phục nhưng có thể làm tăng mức sử dụng bộ nhớ. Mặc định là 512kb.
  • indices.recovery.recovery_activity_timeout (Động, đơn vị thời gian): Thiết lập thời gian chờ cho từng hoạt động khôi phục trong quá trình khôi phục phân mảnh. Nếu một hoạt động khôi phục (chẳng hạn như chuyển một khối tệp) mất nhiều thời gian hơn thời gian chờ này, hoạt động khôi phục được coi là thất bại và sẽ được thử lại. Mặc định là 30 giây.

Snapshot settings

BlackHole hỗ trợ các cài đặt chụp nhanh sau:
- snapshot.max_concurrent_operations (Động, số nguyên): Số lượng tối đa các hoạt động chụp nhanh đồng thời. Mặc định là 1000.
Security-related snapshot settings
Để biết cài đặt ảnh chụp nhanh liên quan đến bảo mật, hãy xem Security settings.
Shared file system
Để biết thông tin về cách sử dụng hệ thống tệp chia sẻ, hãy xem Hệ thống tệp chia sẻ.
Amazon S3 settings
Để biết thông tin về cài đặt kho lưu trữ Amazon S3, hãy xem Amazon S3.

Cluster manager task throttling settings

Để biết thông tin về cài đặt giới hạn tác vụ của trình quản lý cụm, hãy xem mục Cài đặt giới hạn giới hạn.

Remote-backed storage settings

BlackHole hỗ trợ các thiết lập lưu trữ được sao lưu từ xa ở cấp cụm sau:
- cluster.remote_store.translog.buffer_interval (Động, đơn vị thời gian): Giá trị mặc định của khoảng thời gian bộ đệm translog được sử dụng khi thực hiện cập nhật translog định kỳ. Thiết lập này chỉ có hiệu lực khi cài đặt chỉ mục index.remote_store.translog.buffer_interval không được thiết lập.
Để biết thêm về cài đặt lưu trữ được sao lưu từ xa, hãy xem Lưu trữ được sao lưu từ xa và Cấu hình lưu trữ được sao lưu từ xa. Để biết cài đặt áp suất ngược của đoạn từ xa, hãy xem Cài đặt áp suất ngược của đoạn từ xa.

Search backpressure settings

Áp lực tìm kiếm ngược là một cơ chế được sử dụng để xác định các yêu cầu tìm kiếm tốn nhiều tài nguyên và hủy chúng khi nút đang bị ép buộc. Để biết thêm thông tin, hãy xem Cài đặt áp lực tìm kiếm ngược.

Shard indexing backpressure settings

Áp lực ngược lập chỉ mục phân mảnh là một cơ chế từ chối thông minh ở cấp độ từng phân mảnh, tự động từ chối các yêu cầu lập chỉ mục khi cụm của bạn đang quá tải. Để biết thêm thông tin, hãy xem cài đặt áp lực ngược lập chỉ mục phân mảnh.

Segment replication settings

Để biết thông tin về cài đặt sao chép phân đoạn, hãy xem Sao chép phân đoạn. Để biết thông tin về cài đặt áp suất ngược sao chép phân đoạn, hãy xem Áp suất ngược sao chép phân đoạn.

Cross-cluster replication settings

Để biết thông tin về cài đặt sao chép liên cụm, hãy xem Cài đặt sao chép.

Thread pool settings

BlackHole sử dụng nhiều nhóm luồng để quản lý mức tiêu thụ bộ nhớ và xử lý hiệu quả các loại thao tác khác nhau. Nhóm luồng có thể được cấu hình để tối ưu hóa hiệu suất dựa trên các mẫu khối lượng công việc của cụm. Để tìm hiểu thêm về cài đặt tĩnh và động, hãy xem Cấu hình BlackHole

Node processor settings

BlackHole tự động phát hiện số lượng bộ xử lý khả dụng và cấu hình nhóm luồng phù hợp. Bạn có thể ghi đè tính năng phát hiện này:
  • node.processors (Tĩnh, số nguyên): Thiết lập rõ ràng số lượng bộ xử lý mà BlackHole nên sử dụng để tính toán kích thước nhóm luồng. Điều này hữu ích khi chạy nhiều phiên bản BlackHole trên cùng một máy chủ hoặc khi việc tự động phát hiện bộ xử lý không chính xác. Khi được thiết lập, kích thước nhóm luồng được tính toán dựa trên giá trị này thay vì số lượng bộ xử lý được phát hiện. Mặc định là số lượng bộ xử lý được tự động phát hiện.

Thread pool types

BlackHole hỗ trợ các loại nhóm luồng sau. Mỗi loại hỗ trợ các tham số khác nhau.
Fixed thread pools
Nhóm luồng cố định duy trì số lượng luồng không đổi và sử dụng hàng đợi cho các yêu cầu đang chờ xử lý. BlackHole hỗ trợ các nhóm luồng cố định sau:
  • get: Dành cho các hoạt động truy xuất tài liệu (kiểu cố định)
  • analyze: For Analyze API requests (fixed type)
  • write: Dành cho việc lập chỉ mục, xóa, cập nhật và các hoạt động hàng loạt (kiểu cố định)
  • force_merge: Dành cho các hoạt động hợp nhất bắt buộc (kiểu cố định)
Fixed thread pools support the following settings:
  • thread_pool.<tên_pool>.size (Tĩnh, số nguyên): Thiết lập số luồng trong nhóm luồng. Số lượng luồng không đổi bất kể khối lượng công việc.
  • thread_pool.<tên_pool>.queue_size (Tĩnh, số nguyên): Kiểm soát kích thước hàng đợi cho các yêu cầu đang chờ xử lý khi tất cả các luồng đều bận. Đặt thành -1 cho các hàng đợi không giới hạn. Khi hàng đợi đầy, các yêu cầu mới sẽ bị từ chối. Giá trị mặc định thay đổi tùy theo loại nhóm luồng.
Scaling thread pools
Nhóm luồng mở rộng sẽ điều chỉnh số lượng luồng một cách linh hoạt dựa trên khối lượng công việc. BlackHole hỗ trợ các nhóm luồng mở rộng sau:
  • generic : Dành cho các hoạt động nền chung như khám phá nút (kiểu mở rộng)
  • snapshot: Đối với các hoạt động chụp nhanh và khôi phục (loại mở rộng)
  • warmer: Đối với các hoạt động làm ấm chỉ số (loại mở rộng)
  • refresh: Đối với các hoạt động làm mới chỉ mục (kiểu mở rộng)
  • flush: Đối với các hoạt động flush và fsync (scaling type)
  • management: Đối với hoạt động quản lý cụm (scaling type)
  • fetch_shard_started: Đối với các hoạt động trạng thái phân mảnh (scaling type)
  • fetch_shard_store: Đối với hoạt động lưu trữ phân mảnh (scaling type)
Nhóm luồng mở rộng hỗ trợ các thiết lập sau:
  • thread_pool.<pool_name>.core (Static, integer): Đặt số lượng luồng tối thiểu cần giữ trong nhóm, ngay cả khi không hoạt động.
  • thread_pool.<pool_name>.max (Static, integer): Đặt số lượng luồng tối đa có thể được tạo trong nhóm.
  • thread_pool.<pool_name>.keep_alive (Static, time unit): Xác định thời gian luồng nhàn rỗi được giữ trong nhóm trước khi bị chấm dứt. Các luồng có kích thước lớn hơn lõi sẽ bị chấm dứt sau khoảng thời gian không hoạt động này.

Example configurations

Để cấu hình nhóm luồng cố định, hãy cập nhật tệp cấu hình như sau:
thread_pool:
	write:
		size: 30
		queue_size: 1000
Để cấu hình nhóm luồng mở rộng, hãy cập nhật tệp cấu hình như sau
thread_pool:
	warmer:
		core: 1
		max: 8
		keep_alive: 2m
Để thiết lập số lượng bộ xử lý tùy chỉnh, hãy cập nhật tệp cấu hình như sau:
node.processors: 8

Best practices

  • Monitor thread pool usage: Sử dụng API Nodes Stats để giám sát số liệu nhóm luồng
  • Avoid over-provisioning: Đặt kích thước nhóm luồng quá cao có thể dẫn đến áp lực bộ nhớ và chi phí chuyển đổi ngữ cảnh.
  • Consider workload patterns: Điều chỉnh kích thước nhóm luồng dựa trên mẫu đọc/ghi cụ thể của cụm của bạn.
  • Test configuration changes: Luôn luôn kiểm tra các sửa đổi nhóm luồng trong môi trường không phải môi trường sản xuất trước.

Circuit breaker settings

Bộ ngắt mạch ngăn BlackHole gây ra lỗi Java OutOfMemoryError. Bộ ngắt mạch cha chỉ định tổng dung lượng bộ nhớ khả dụng cho tất cả các bộ ngắt mạch con. Các bộ ngắt mạch con chỉ định tổng dung lượng bộ nhớ khả dụng cho chính chúng. Để tìm hiểu thêm về cài đặt tĩnh và động, hãy xem phần Cấu hình BlackHole.

Parent circuit breaker settings

BlackHole hỗ trợ các cài đặt bộ ngắt mạch chính sau:
  • indices.breaker.total.use_real_memory (Tĩnh, Boolean): Nếu đúng, bộ ngắt mạch chính sẽ xem xét mức sử dụng bộ nhớ thực tế. Nếu không, bộ ngắt mạch chính sẽ xem xét lượng bộ nhớ được các bộ ngắt mạch con dành riêng. Mặc định là đúng.
  • indices.breaker.total.limit (Động, phần trăm): Chỉ định giới hạn bộ nhớ ban đầu cho bộ ngắt mạch cha. Nếu indices.breaker.total.use_real_memory là true, mặc định là 95% heap JVM. Nếu indices.breaker.total.use_real_memory là false, mặc định là 70% heap JVM.

Field data circuit breaker settings

Bộ ngắt mạch dữ liệu trường giới hạn bộ nhớ heap cần thiết để tải một trường vào bộ đệm dữ liệu trường. BlackHole hỗ trợ các cài đặt ngắt mạch dữ liệu trường sau:
  • indices.breaker.fielddata.limit (Động, phần trăm): Chỉ định giới hạn bộ nhớ cho bộ ngắt mạch dữ liệu trường. Mặc định là 40% heap JVM.
  • indices.breaker.fielddata.overhead (Động, gấp đôi): Hằng số dùng để nhân các ước tính dữ liệu trường để xác định ước tính cuối cùng. Mặc định là 1,03.

Request circuit breaker settings

Bộ ngắt mạch yêu cầu giới hạn bộ nhớ cần thiết để xây dựng các cấu trúc dữ liệu cần thiết cho một yêu cầu (ví dụ: khi tính toán tổng hợp). BlackHole hỗ trợ các thiết lập ngắt mạch yêu cầu sau:
  • indices.breaker.request.limit (Động, phần trăm): Chỉ định giới hạn bộ nhớ cho bộ ngắt mạch yêu cầu. Mặc định là 60% heap JVM.
  • indices.breaker.request.overhead (Động, gấp đôi): Hằng số dùng để nhân các ước tính yêu cầu để xác định ước tính cuối cùng. Mặc định là 1.

In-flight request circuit breaker settings

Bộ ngắt mạch yêu cầu đang chạy sẽ giới hạn mức sử dụng bộ nhớ cho tất cả các yêu cầu đang chạy đến ở cấp độ vận chuyển và HTTP. Mức sử dụng bộ nhớ cho một yêu cầu dựa trên độ dài nội dung của yêu cầu và bao gồm bộ nhớ cần thiết cho yêu cầu thô và một đối tượng có cấu trúc đại diện cho yêu cầu. BlackHole hỗ trợ các thiết lập ngắt mạch yêu cầu đang chạy sau:
  • network.breaker.inflight_requests.limit (Động, phần trăm): Chỉ định giới hạn bộ nhớ cho bộ ngắt mạch yêu cầu đang bay. Mặc định là 100% vùng nhớ heap JVM (do đó, giới hạn sử dụng bộ nhớ cho một yêu cầu đang bay được xác định bởi giới hạn bộ nhớ của bộ ngắt mạch chính).
  • network.breaker.inflight_requests.overhead (Động, gấp đôi): Hằng số dùng để nhân các ước tính yêu cầu đang bay để xác định ước tính cuối cùng. Mặc định là 2.

Script compilation circuit breaker settings

Bộ ngắt mạch biên dịch tập lệnh giới hạn số lần biên dịch tập lệnh nội tuyến trong một khoảng thời gian. BlackHole hỗ trợ cài đặt bộ ngắt mạch biên dịch tập lệnh sau: script.max_compilations_rate (Động, tốc độ): Số lượng tối đa các tập lệnh động duy nhất được biên dịch trong một khoảng thời gian cho một ngữ cảnh nhất định. Mặc định là 150 tập lệnh cứ sau 5 phút (150/5 phút).

Regular expression circuit breaker settings

Bộ ngắt mạch biểu thức chính quy cho phép bật hoặc tắt biểu thức chính quy và giới hạn độ phức tạp của chúng. BlackHole hỗ trợ các thiết lập ngắt mạch biểu thức chính quy sau:
- script.painless.regex.enabled (Tĩnh, chuỗi): Bật biểu thức chính quy trong các tập lệnh Painless. Các giá trị hợp lệ là:
	- limited: Bật biểu thức chính quy và giới hạn độ phức tạp của chúng bằng thiết lập script.painless.regex.limit-factor.
	- true: Bật biểu thức chính quy. Tắt bộ ngắt mạch biểu thức chính quy và không giới hạn độ phức tạp của biểu thức chính quy.
	- false: Tắt biểu thức chính quy. Nếu một tập lệnh Painless chứa biểu thức chính quy, nó sẽ trả về lỗi.
Mặc định là limited.
- script.painless.regex.limit-factor (Tĩnh, số nguyên): Chỉ áp dụng nếu script.painless.regex.enabled được đặt thành limited. Giới hạn số ký tự của biểu thức chính quy trong tập lệnh Painless. Giới hạn ký tự được tính bằng cách nhân số ký tự trong đầu vào tập lệnh với script.painless.regex.limit-factor. Mặc định là 6 (do đó, nếu đầu vào có 5 ký tự, số ký tự tối đa trong biểu thức chính quy là 5 × 6 = 30).

Plugin settings

Các thiết lập sau đây liên quan đến plugin BlackHole

Alerting plugin settings

Để biết thông tin về cài đặt cảnh báo, hãy xem Cài đặt cảnh báo.

Anomaly Detection plugin settings

Để biết thông tin về cài đặt phát hiện bất thường, hãy xem Cài đặt phát hiện bất thường.

Asynchronous Search plugin settings

Để biết thông tin về cài đặt tìm kiếm không đồng bộ, hãy xem Cài đặt tìm kiếm không đồng bộ.

Cross-Cluster Replication plugin settings

Để biết thông tin về cài đặt sao chép liên cụm, hãy xem Cài đặt sao chép

Flow Framework plugin settings

Để biết thông tin về cài đặt quy trình làm việc tự động, hãy xem Cài đặt quy trình làm việc.

Geospatial plugin settings

Để biết thông tin về cài đặt bộ xử lý IP2Geo của plugin Geospatial, hãy xem Cài đặt cụm.

Index Management plugin settings

Để biết thông tin về cài đặt quản lý trạng thái chỉ mục (ISM), hãy xem cài đặt ISM.
Index rollup settings
Để biết thông tin về cài đặt tổng hợp chỉ mục, hãy xem Cài đặt tổng hợp chỉ mục.

Job Scheduler plugin settings

Để biết thông tin về cài đặt plugin Job Scheduler, hãy xem Cài đặt cụm Job Scheduler.

k-NN plugin settings

Để biết thông tin về cài đặt k-NN, hãy xem cài đặt k-NN.

ML Commons plugin settings

Để biết thông tin về cài đặt máy học, hãy xem cài đặt cụm ML Commons

Neural Search plugin settings

Để biết thông tin về cài đặt plugin Neural Search, hãy xem Cài đặt plugin Neural Search.

Notifications plugin settings

Plugin Thông báo hỗ trợ các cài đặt sau. Tất cả cài đặt trong danh sách này đều là cài đặt động:
- blackhole.notifications.core.allowed_config_types (Danh sách): Các loại cấu hình được phép của plugin Thông báo. Sử dụng API GET /_plugins/_notifications/features để lấy giá trị của cài đặt này.

Các loại cấu hình bao gồm slack, chime, microsoft_teams, webhook, email, sns, ses_account, smtp_account và email_group.
- blackhole.notifications.core.email.minimum_header_length (Số nguyên): Độ dài tiêu đề email tối thiểu. Được sử dụng để xác thực tổng độ dài tin nhắn email. Mặc định là 160.
- blackhole.notifications.core.email.size_limit (Số nguyên): Giới hạn kích thước email. Được sử dụng để xác thực tổng độ dài tin nhắn email. Mặc định là 10000000.
- blackhole.notifications.core.http.connection_timeout (Số nguyên): Thời gian chờ kết nối của máy khách HTTP nội bộ. Máy khách được sử dụng cho các kênh thông báo dựa trên webhook. Mặc định là 5000.
- blackhole.notifications.core.http.host_deny_list (Danh sách): Danh sách các máy chủ bị từ chối. Máy khách HTTP không gửi thông báo đến các URL webhook trong danh sách này.
- blackhole.notifications.core.http.max_connection_per_route (Số nguyên): Số lượng kết nối HTTP tối đa trên mỗi tuyến của máy khách HTTP nội bộ. Máy khách được sử dụng cho các kênh thông báo dựa trên webhook. Mặc định là 20.
- blackhole.notifications.core.http.max_connections (Số nguyên): Số lượng kết nối HTTP tối đa của máy khách HTTP nội bộ. Máy khách được sử dụng cho các kênh thông báo dựa trên webhook. Mặc định là 60.
- blackhole.notifications.core.http.socket_timeout (Số nguyên): Cấu hình thời gian chờ socket của máy khách HTTP nội bộ. Máy khách được sử dụng cho các kênh thông báo dựa trên webhook. Mặc định là 50000.
- blackhole.notifications.core.tooltip_support (Boolean): Bật hỗ trợ tooltip cho plugin Thông báo. Sử dụng API GET /_plugins/_notifications/features để lấy giá trị của cài đặt này. Mặc định là true.
- blackhole.notifications.general.filter_by_backend_roles (Boolean): Bật lọc theo vai trò backend (kiểm soát truy cập dựa trên vai trò cho các kênh thông báo). Mặc định là false.

Query Insights plugin settings

Để biết thông tin về cài đặt plugin Query Insights, hãy xem tính năng và cài đặt Query Insights.

Security plugin settings

Để biết thông tin về cài đặt plugin Bảo mật, hãy xem Cài đặt bảo mật.

Security Analytics plugin settings

Để biết thông tin về cài đặt phân tích bảo mật, hãy xem Cài đặt phân tích bảo mật.

SQL plugin settings

Để biết thông tin về các cài đặt liên quan đến SQL và PPL, hãy xem Cài đặt SQL.

Workload Management plugin settings

Để biết thông tin về cài đặt quản lý khối lượng công việc, hãy xem Cài đặt quản lý khối lượng công việc.

General plugin settings

BlackHole hỗ trợ các thiết lập cấu hình plugin chung sau:
- plugin.mandatory (Tĩnh, danh sách): Chỉ định các plugin bắt buộc để nút khởi động thành công. Nếu bất kỳ plugin nào trong danh sách không khả dụng hoặc không thể tải, nút sẽ không khởi động. Thiết lập này đặc biệt quan trọng đối với các cụm phụ thuộc vào các bộ xử lý tùy chỉnh hoặc chức năng plugin quan trọng khác để đảm bảo hành vi nhất quán trên tất cả các nút. Bạn có thể chỉ định nhiều plugin dưới dạng danh sách phân tách bằng dấu phẩy. Mặc định là [] (danh sách trống).

Experimental feature flags

Các bản phát hành BlackHole có thể chứa các tính năng thử nghiệm mà bạn có thể bật hoặc tắt tùy ý. Có một số phương pháp để bật cờ tính năng, tùy thuộc vào loại cài đặt.

Enable in blackhole.yml

Nếu bạn đang chạy cụm BlackHole và muốn bật cờ tính năng trong tệp cấu hình, hãy thêm dòng sau vào blackhole.yml:
blackhole.experimental.feature.<feature_name>.enabled: true

Enable on Docker containers

Nếu bạn đang chạy Docker, hãy thêm dòng sau vào docker-compose.yml trong phần môi trường blackhole-node:
BLACKHOLE_JAVA_OPTS="-Dblackhole.experimental.feature.<feature_name>.enabled=true"

Kích hoạt trên cài đặt tarball

Để bật cờ tính năng trên bản cài đặt tarball, hãy cung cấp tham số JVM mới trong config/jvm.options hoặc BLACKHOLE_JAVA_OPTS.

Option 1: Modify jvm.options

Thêm các dòng sau vào config/jvm.options trước khi bắt đầu quá trình blackhole để kích hoạt tính năng và sự phụ thuộc của nó:
-Dblackhole.experimental.feature.<feature_name>.enabled=true
Sau đó chạy BlackHole:
./bin/blackhole

Option 2: Enable with an environment variable

Thay vì trực tiếp sửa đổi config/jvm.options, bạn có thể định nghĩa các thuộc tính bằng cách sử dụng biến môi trường. Việc này có thể được thực hiện bằng một lệnh duy nhất khi bạn khởi động BlackHole hoặc bằng cách định nghĩa biến với export. Để thêm cờ tính năng trực tiếp khi khởi động BlackHole, hãy chạy lệnh sau:
BLACKHOLE_JAVA_OPTS="-Dblackhole.experimental.feature.<feature_name>.enabled=true" ./blackhole-1.0.0/bin/blackhole
Nếu bạn muốn định nghĩa biến môi trường riêng biệt trước khi chạy BlackHole, hãy chạy các lệnh sau:
export BLACKHOLE_JAVA_OPTS="-Dblackhole.experimental.feature.<feature_name>.enabled=true"
./bin/blackhole

Enable for BlackHole development

Để bật cờ tính năng cho quá trình phát triển, bạn phải thêm các thuộc tính chính xác vào run.gradle trước khi xây dựng BlackHole. Xem Hướng dẫn dành cho Nhà phát triển để biết thông tin về cách sử dụng Gradle để xây dựng BlackHole. Thêm các thuộc tính sau vào run.gradle để kích hoạt tính năng này:
testClusters {
  runTask {
    testDistribution = 'archive'
    if (numZones > 1) numberOfZones = numZones
    if (numNodes > 1) numberOfNodes = numNodes
    systemProperty 'blackhole.experimental.feature.<feature_name>.enabled', 'true'
  }
}

Logs

Nhật ký BlackHole bao gồm thông tin hữu ích để giám sát hoạt động của cụm và khắc phục sự cố. Vị trí của nhật ký sẽ khác nhau tùy theo loại cài đặt:
  • Trên Docker, BlackHole ghi hầu hết nhật ký vào console và lưu trữ phần còn lại trong blackhole/logs/. Bản cài đặt tarball cũng sử dụng blackhole/logs/.
  • Trên hầu hết các bản cài đặt Linux, BlackHole ghi nhật ký vào /var/log/blackhole/.
Logs có sẵn dưới dạng tệp .log (plain text) và .json. Quyền truy cập cho nhật ký BlackHole mặc định là -rw-r--r--, nghĩa là bất kỳ tài khoản người dùng nào trên nút đều có thể đọc chúng. Bạn có thể thay đổi hành vi này cho từng loại nhật ký trong log4j2.properties bằng tùy chọn filePermissions. Ví dụ, bạn có thể thêm appender.rolling.filePermissions = rw-r----- để thay đổi quyền cho JSON server log.

Application logs

Đối với nhật ký ứng dụng, BlackHole sử dụng Apache Log4j 2 và các mức nhật ký tích hợp sẵn (từ nhẹ đến nặng). Bảng sau đây mô tả các thiết lập ghi nhật ký.
Cài đặtKiểu dữ liệuMô tả
logger.org.blackhole.discoveryChuỗiCác logger chấp nhận các mức nhật ký tích hợp sẵn của Log4j: OFF, FATAL, ERROR, WARN, INFO, DEBUGTRACE. Mặc định là INFO.
Thay vì thay đổi mức nhật ký mặc định (logger.level), bạn thay đổi mức nhật ký cho từng mô-đun BlackHole:
PUT /_cluster/settings
{
  "persistent": {
    "logger.org.blackhole.index.reindex": "DEBUG",
    "logger.org.blackhole.indices.recovery": "TRACE"
  }
}
Có thể tìm thấy các danh mục chung trong Danh mục ghi nhật ký lõi chung và Danh mục ghi nhật ký Plugin; tuy nhiên, cách dễ nhất để xác định các mô-đun không phải là trong nhật ký, nơi viết tắt đường dẫn (ví dụ: o.o.i.r), mà là trong mã nguồn BlackHole. Sau khi thay đổi mẫu này, BlackHole sẽ phát ra các bản ghi chi tiết hơn nhiều trong quá trình lập chỉ mục lại:
[2019-10-18T16:52:51,184][DEBUG][o.o.i.r.TransportReindexAction] [node1] [1626]: starting
[2019-10-18T16:52:51,186][DEBUG][o.o.i.r.TransportReindexAction] [node1] executing initial scroll against [some-index]
[2019-10-18T16:52:51,291][DEBUG][o.o.i.r.TransportReindexAction] [node1] scroll returned [3] documents with a scroll id of [DXF1Z==]
[2019-10-18T16:52:51,292][DEBUG][o.o.i.r.TransportReindexAction] [node1] [1626]: got scroll response with [3] hits
[2019-10-18T16:52:51,294][DEBUG][o.o.i.r.WorkerBulkByScrollTaskState] [node1] [1626]: preparing bulk request for [0s]
[2019-10-18T16:52:51,297][DEBUG][o.o.i.r.TransportReindexAction] [node1] [1626]: preparing bulk request
[2019-10-18T16:52:51,299][DEBUG][o.o.i.r.TransportReindexAction] [node1] [1626]: sending [3] entry, [222b] bulk request
[2019-10-18T16:52:51,310][INFO ][o.e.c.m.MetaDataMappingService] [node1] [some-new-index/R-j3adc6QTmEAEb-eAie9g] create_mapping [_doc]
[2019-10-18T16:52:51,383][DEBUG][o.o.i.r.TransportReindexAction] [node1] [1626]: got scroll response with [0] hits
[2019-10-18T16:52:51,384][DEBUG][o.o.i.r.WorkerBulkByScrollTaskState] [node1] [1626]: preparing bulk request for [0s]
[2019-10-18T16:52:51,385][DEBUG][o.o.i.r.TransportReindexAction] [node1] [1626]: preparing bulk request
[2019-10-18T16:52:51,386][DEBUG][o.o.i.r.TransportReindexAction] [node1] [1626]: finishing without any catastrophic failures
[2019-10-18T16:52:51,386][DEBUG][o.o.i.r.TransportReindexAction] [node1] [1626]: finishing without any catastrophic failures
Các cấp độ DEBUGTRACE rất chi tiết. Nếu bạn bật một trong hai cấp độ này để khắc phục sự cố, hãy tắt nó sau khi hoàn tất.
Có nhiều cách khác để thay đổi mức nhật ký: 1. Add lines to blackhole.yml:
logger.org.blackhole.index.reindex: debug
Việc sửa đổi blackhole.yml là hợp lý nhất nếu bạn muốn sử dụng lại cấu hình ghi nhật ký của mình trên nhiều cụm hoặc gỡ lỗi các sự cố khởi động bằng một nút duy nhất. 2. Modify log4j2.properties:
# Define a new logger with unique ID of reindex
logger.reindex.name = org.blackhole.index.reindex
# Set the log level for that ID
logger.reindex.level = debug
Cách tiếp cận này cực kỳ linh hoạt nhưng đòi hỏi phải quen thuộc với cú pháp tệp thuộc tính Log4j 2. Nhìn chung, các tùy chọn khác cung cấp trải nghiệm cấu hình đơn giản hơn. Nếu bạn kiểm tra tệp log4j2.properties mặc định trong thư mục cấu hình, bạn có thể thấy một số biến cụ thể của BlackHole:
appender.console.layout.pattern = [%d{ISO8601}][%-5p][%-25c{1.}] [%node_name]%marker %m%n
appender.rolling_old.fileName = ${sys:blackhole.logs.base_path}${sys:file.separator}${sys:blackhole.logs.cluster_name}.log
  • ${sys:blackhole.logs.base_path} là thư mục chứa nhật ký (ví dụ: /var/log/blackhole/).
  • ${sys:blackhole.logs.cluster_name} là tên của cụm.
  • ${sys:blackhole.logs.node_name} là tên của nút.
  • [%node_name] là tên của nút.

Common core logging categories

Bảng sau đây liệt kê các danh mục ghi nhật ký cốt lõi phổ biến.
Tiền tố khóa LoggerMô tả
org.blackhole.actionCác hành động vận chuyển, như index, bulk, get hoặc các hành động cụm. Hữu ích khi theo dõi thực thi yêu cầu trên các nút.
org.blackhole.clusterXuất bản trạng thái cụm, định tuyến và cập nhật siêu dữ liệu. Bật cho các vấn đề về hình thành cụm, định tuyến và phân bổ.
org.blackhole.discoveryKhám phá nút và điều phối cụm. Hữu ích trong quá trình hình thành cụm hoặc kiểm tra phân vùng mạng. Các gói con bao gồm khám phá đám mây.
org.blackhole.gatewayGateway, ClusterState, Phục hồi và Phân bổ. Hữu ích cho việc khởi động lại nút, phân bổ phân đoạn và phục hồi phân đoạn từ lưu trữ trên đĩa và từ xa.
org.blackhole.httpXử lý yêu cầu ở lớp HTTP cấp thấp. Sử dụng cho các vấn đề về giao tiếp và cài đặt HTTP.
org.blackhole.indexNội bộ theo chỉ mục, như engine, translog hoặc các hoạt động phân đoạn. Sử dụng để gỡ lỗi hành vi phân đoạn/engine.
org.blackhole.indicesCác dịch vụ liên chỉ mục, như phục hồi, lưu trữ hoặc dịch vụ trạng thái cụm. Bật trong quá trình phục hồi phân đoạn và phân tích áp lực lập chỉ mục.
org.blackhole.ingestĐường ống và bộ xử lý ingest. Bật khi gỡ lỗi thực thi đường ống.
org.blackhole.nodeVòng đời và khởi động nút. Hữu ích để xử lý các vấn đề khởi động.
org.blackhole.repositoriesTương tác kho lưu trữ snapshot/restore, như với Amazon Simple Storage Service (Amazon S3), Amazon Elastic File System (Amazon EFS) và các dịch vụ khác. Sử dụng cho lỗi kho lưu trữ và điều phối snapshot.
org.blackhole.restTrình xử lý REST và định tuyến đến các hành động. Hữu ích cho chi tiết xử lý REST API.
org.blackhole.scriptEngine tập lệnh. Sử dụng để gỡ lỗi biên dịch và thực thi tập lệnh.
org.blackhole.searchGiai đoạn tìm kiếm, như truy vấn, tìm nạp hoặc viết lại. Bật để gỡ lỗi thực thi truy vấn.
org.blackhole.snapshotsĐiều phối snapshot và restore. Sử dụng khi chẩn đoán vòng đời snapshot.
org.blackhole.threadpoolThực thi nhóm luồng. Hữu ích để hiểu xếp hàng và bão hòa nhóm.
org.blackhole.transportLớp TCP vận chuyển giữa các nút. Sử dụng cho các vấn đề giao tiếp giữa các nút.
org.blackhole.deprecationCảnh báo lỗi thời. Hữu ích trong quá trình nâng cấp để tìm các API và cài đặt lỗi thời.

Plugin logger categories

Bảng sau đây liệt kê các loại plugin ghi nhật ký phổ biến.
PluginVí dụ tiền tố LoggerMô tả
Securityorg.blackhole.securitySử dụng để gỡ lỗi xác thực, ủy quyền và TLS trong plugin Security.
k-NNorg.blackhole.knnSử dụng để gỡ lỗi xây dựng chỉ mục k-NN, tìm kiếm và quản lý bộ nhớ.
ML Commonsorg.blackhole.mlSử dụng cho đăng ký mô hình, suy luận và trình chạy tác vụ.
Alertingorg.blackhole.alertingSử dụng để giám sát thực thi và thông báo.
Index Managementorg.blackhole.indexmanagementSử dụng cho các chính sách Index State Management (ISM), rollups và transforms.
Discovery – Amazon Elastic Compute Cloud (Amazon EC2)org.blackhole.discovery.ec2Thông tin khám phá đám mây.

Search request slow logs

Phiên bản mới 2.12 của BlackHole cung cấp nhật ký chậm theo yêu cầu cho tìm kiếm. Các nhật ký này dựa trên ngưỡng để xác định điều gì được coi là “chậm”. Tất cả các yêu cầu vượt quá ngưỡng đều được ghi lại. Nhật ký chậm yêu cầu tìm kiếm được bật động thông qua API Cài đặt Cụm. Không giống như nhật ký chậm phân đoạn, ngưỡng nhật ký chậm yêu cầu tìm kiếm được cấu hình dựa trên tổng thời gian yêu cầu. Theo mặc định, nhật ký bị tắt (tất cả ngưỡng được đặt thành -1).
PUT /_cluster/settings
{
  "persistent": {
    "cluster.search.request.slowlog.level": "TRACE",
    "cluster.search.request.slowlog.threshold.warn": "10s",
    "cluster.search.request.slowlog.threshold.info": "5s",
    "cluster.search.request.slowlog.threshold.debug": "2s",
    "cluster.search.request.slowlog.threshold.trace": "10ms"
  }
}
Một dòng từ blackhole_index_search_slowlog.log có thể trông như sau:
[2023-10-30T15:47:42,630][TRACE][c.s.r.slowlog] [runTask-0] took[80.8ms], took_millis[80], phase_took_millis[{expand=0, query=39, fetch=22}], total_hits[4 hits], search_type[QUERY_THEN_FETCH], shards[{total: 10, successful: 10, skipped: 0, failed: 0}], source[{"query":{"match_all":{"boost":1.0}}}], id[]
Nhật ký tìm kiếm chậm yêu cầu có thể chiếm đáng kể dung lượng đĩa và ảnh hưởng đến hiệu suất nếu bạn đặt giá trị ngưỡng thấp. Hãy cân nhắc bật tạm thời để khắc phục sự cố hoặc điều chỉnh hiệu suất. Để tắt nhật ký tìm kiếm chậm yêu cầu, hãy trả về tất cả các ngưỡng về -1.

Shard slow logs

BlackHole có hai nhật ký chậm phân đoạn, giúp bạn xác định các vấn đề về hiệu suất: nhật ký chậm tìm kiếm và nhật ký chậm lập chỉ mục. Các nhật ký này dựa vào ngưỡng để xác định điều gì được coi là tìm kiếm “chậm” hoặc thao tác lập chỉ mục “chậm”. Ví dụ: bạn có thể quyết định một truy vấn là chậm nếu mất hơn 15 giây để hoàn tất. Không giống như nhật ký ứng dụng, vốn được cấu hình cho các mô-đun, bạn cấu hình nhật ký chậm cho các chỉ mục. Theo mặc định, cả hai nhật ký đều bị tắt (tất cả các ngưỡng được đặt thành -1). Không giống như yêu cầu tìm kiếm nhật ký chậm, ngưỡng nhật ký chậm của phân đoạn được cấu hình cho từng phân đoạn mất thời gian.
GET <some-index>/_settings?include_defaults=true
{
	"indexing": {
		"slowlog": {
			"reformat": "true",
				"threshold": {
					"index": {
						"warn": "-1",
						"trace": "-1",
						"debug": "-1",
						"info": "-1"
					}
				},
				"source": "1000",
				"level": "TRACE"
				}
			},
			"search": {
				"slowlog": {
					"level": "TRACE",
					"threshold": {
						hreshold": { "fetch": {
							"warn": "-1",
							"trace": "-1",
							"debug": "-1"
							"info": "-1"
						},
						"query": {
							"warn": "-1",
							"trace": "-1",
							"debug": "-1",
							"info": "-1"
						}
					}
				}
			}
		}
		Để bật các nhật ký này, hãy tăng một hoặc nhiều ngưỡng:
		PUT <some-index>/_settings
		{
			"indexing": {
				"slowlog": {
					 "threshold": {
						  "index": {
							  "warn": "15s",
							  "trace": "750ms",
							  "debug": "3s",
							  "info":  "10s"
							  }
							},
							"source": "500",
							"level": "INFO"
						}
					}
				}
Trong ví dụ này, BlackHole ghi lại các hoạt động lập chỉ mục mất 15 giây trở lên ở cấp độ WARN và các hoạt động mất từ ​​10 đến 14.x giây ở cấp độ INFO. Nếu bạn đặt ngưỡng là 0 giây, BlackHole sẽ ghi lại tất cả các hoạt động, điều này có thể hữu ích để kiểm tra xem nhật ký chậm có thực sự được bật hay không.
  • reformat chỉ định liệu có ghi nhật ký trường _source của tài liệu dưới dạng một dòng duy nhất (true) hay cho phép nó trải rộng trên nhiều dòng (false).
  • source là số ký tự của trường _source của tài liệu để ghi nhật ký.
  • level là mức nhật ký tối thiểu cần bao gồm.
Một dòng từ blackhole_index_indexing_slowlog.log có thể trông như thế này:
node1 | [2019-10-24T19:48:51,012][WARN][i.i.s.index] [node1] [some-index/i86iF5kyTyy-PS8zrdDeAA] took[3.4ms], took_millis[3], type[_doc], id[1], routing[], source[{"title":"Your Name", "Director":"Makoto Shinkai"}]
Nhật ký chậm của shard có thể chiếm đáng kể dung lượng đĩa và ảnh hưởng đến hiệu suất nếu bạn đặt giá trị ngưỡng thấp. Nhật ký được tạo ra chi tiết hơn so với nhật ký chậm của yêu cầu Tìm kiếm. Hãy cân nhắc bật tạm thời để khắc phục sự cố hoặc điều chỉnh hiệu suất. Để tắt nhật ký chậm của shard, hãy trả về tất cả các ngưỡng về -1.

Task logs

BlackHole có thể ghi lại thời gian CPU và mức sử dụng bộ nhớ cho N tác vụ tìm kiếm ngốn bộ nhớ nhiều nhất khi các tác vụ tiêu thụ tài nguyên được bật. Theo mặc định, các tác vụ tiêu thụ tài nguyên sẽ ghi lại 10 tác vụ tìm kiếm hàng đầu với khoảng thời gian 60 giây. Các giá trị này có thể được cấu hình trong blackhole.yml. Ghi nhật ký tác vụ được bật động thông qua API Cài đặt Cụm:
PUT _cluster/settings
{
  "persistent": {
    "task_resource_consumers.enabled": "true"
  }
}
Việc kích hoạt người dùng tài nguyên tác vụ có thể tác động đến độ trễ tìm kiếm.
Sau khi được bật, nhật ký sẽ được ghi vào logs/blackhole_task_detailslog.jsonlogs/blackhole_task_detailslog.log. Để cấu hình khoảng thời gian ghi nhật ký và số lượng tác vụ tìm kiếm được ghi lại, hãy thêm các dòng sau vào blackhole.yml:
# Số lượng tác vụ tìm kiếm tốn kém cần ghi nhật ký
cluster.task.consumers.top_n.size: 100

# Khoảng thời gian ghi nhật ký
cluster.task.consumers.top_n.frequency: 30s

Deprecation logs

Nhật ký lỗi thời ghi lại thời điểm khách hàng thực hiện các lệnh gọi API lỗi thời đến cụm của bạn. Những nhật ký này có thể giúp bạn xác định và khắc phục sự cố trước khi nâng cấp lên phiên bản chính mới. Theo mặc định, BlackHole ghi lại các lệnh gọi API lỗi thời ở cấp độ WARN, hoạt động tốt trong hầu hết mọi trường hợp sử dụng. Nếu cần, hãy cấu hình logger.deprecation.level bằng _cluster/settings, blackhole.yml hoặc log4j2.properties.