Link Search Menu Expand Document Documentation Menu

配置 OpenSearch

OpenSearch 设置有两种类型:动态设置静态设置

动态设置

动态索引设置是可以随时更新的设置。您可以通过集群设置 API 配置 OpenSearch 动态设置。有关详细信息,请参阅使用 API 更新集群设置

如果可能,请使用集群设置 API;opensearch.yml 是每个节点的本地文件,而 API 将设置应用于集群中的所有节点。

静态设置

某些操作是静态的,需要您修改 opensearch.yml 配置文件并重启集群。一般来说,这些设置与网络、集群形成和本地文件系统有关。要了解更多信息,请参阅集群形成

将设置指定为环境变量

您可以通过以下方式指定环境变量。

启动时的参数

您可以在启动 OpenSearch 时使用 -E 将环境变量指定为参数

./opensearch -Ecluster.name=opensearch-cluster -Enode.name=opensearch-node1 -Ehttp.host=0.0.0.0 -Ediscovery.type=single-node

直接在 shell 环境中

您可以在启动 OpenSearch 之前直接在 shell 环境中配置环境变量,如下例所示

export OPENSEARCH_JAVA_OPTS="-Xms2g -Xmx2g"
export OPENSEARCH_PATH_CONF="/etc/opensearch"
./opensearch

Systemd 服务文件

当 OpenSearch 作为由 systemd 管理的服务运行时,您可以在服务文件中指定环境变量,如下例所示

# /etc/systemd/system/opensearch.service.d/override.conf
[Service]
Environment="OPENSEARCH_JAVA_OPTS=-Xms2g -Xmx2g"
Environment="OPENSEARCH_PATH_CONF=/etc/opensearch"

创建或修改文件后,使用以下命令重新加载 systemd 配置并重启服务

sudo systemctl daemon-reload
sudo systemctl restart opensearch

Docker 环境变量

在 Docker 中运行 OpenSearch 时,您可以使用 docker run 命令的 -e 选项指定环境变量,如下所示

docker run -e "OPENSEARCH_JAVA_OPTS=-Xms2g -Xmx2g" -e "OPENSEARCH_PATH_CONF=/usr/share/opensearch/config" opensearchproject/opensearch:latest

使用 API 更新集群设置

更改设置的第一步是通过发送以下请求来查看当前设置

GET _cluster/settings?include_defaults=true

有关非默认设置的更简洁摘要,请发送以下请求

GET _cluster/settings

集群设置 API 中存在三类设置:持久设置、瞬态设置和默认设置。持久设置在集群重启后仍会保留。重启后,OpenSearch 会清除瞬态设置。

如果您在多个位置指定相同的设置,OpenSearch 将使用以下优先级

  1. 瞬态设置
  2. 持久设置
  3. 来自 opensearch.yml 的设置
  4. 默认设置

要更改设置,请使用集群设置 API 并将新值指定为持久或瞬态。此示例显示了平面设置形式

PUT _cluster/settings
{
  "persistent" : {
    "action.auto_create_index" : false
  }
}

您还可以使用扩展形式,它允许您从 GET 响应中复制和粘贴并更改现有值

PUT _cluster/settings
{
  "persistent": {
    "action": {
      "auto_create_index": false
    }
  }
}


配置文件

opensearch.yml 位于每个节点的 /usr/share/opensearch/config/opensearch.yml(Docker)或 /etc/opensearch/opensearch.yml(大多数 Linux 发行版)中。

您可以编辑 OPENSEARCH_PATH_CONF=/etc/opensearch 以更改配置目录位置。此变量来源于 /etc/default/opensearch(Debian 包)和 /etc/sysconfig/opensearch(RPM 包)。

如果您设置了自定义的 OPENSEARCH_PATH_CONF 变量,请注意其他默认环境变量将不会被加载。

您无需将 opensearch.yml 中的设置标记为持久或瞬态,并且设置使用平面形式

cluster.name: my-application
action.auto_create_index: true
compatibility.override_main_response_version: true

演示配置包含一些安全插件设置,您应该在使用 OpenSearch 进行生产工作负载之前对其进行修改。要了解更多信息,请参阅安全性

(可选)CORS 标头配置

如果您正在处理在不同域上针对 OpenSearch 集群运行的客户端应用程序,您可以在 opensearch.yml 中配置标头,以允许在同一台机器上开发本地应用程序。使用 跨域资源共享,以便您的应用程序可以调用本地运行的 OpenSearch API。在您的 custom-opensearch.yml 文件中添加以下行(请注意,“-“ 必须是每行的第一个字符)。

- http.host:0.0.0.0
- http.port:9200
- http.cors.allow-origin:"https://"
- http.cors.enabled:true
- http.cors.allow-headers:X-Requested-With,X-Auth-Token,Content-Type,Content-Length,Authorization
- http.cors.allow-credentials:true

相关文章