layout | title | nav_order | redirect_from | |
---|---|---|---|---|
default |
Configuring OpenSearch |
10 |
|
Most OpenSearch configuration can take place in the cluster settings API. Certain operations require you to modify opensearch.yml
and restart the cluster.
Whenever possible, use the cluster settings API instead; opensearch.yml
is local to each node, whereas the API applies the setting to all nodes in the cluster. Certain settings, however, require opensearch.yml
. In general, these settings relate to networking, cluster formation, and the local file system. To learn more, see Cluster formation.
You can specify environment variables as arguments using -E
when launching OpenSearch:
./opensearch -Ecluster.name=opensearch-cluster -Enode.name=opensearch-node1 -Ehttp.host=0.0.0.0 -Ediscovery.type=single-node
The first step in changing a setting is to view the current settings:
GET _cluster/settings?include_defaults=true
For a more concise summary of non-default settings:
GET _cluster/settings
Three categories of setting exist in the cluster settings API: persistent, transient, and default. Persistent settings, well, persist after a cluster restart. After a restart, OpenSearch clears transient settings.
If you specify the same setting in multiple places, OpenSearch uses the following precedence:
- Transient settings
- Persistent settings
- Settings from
opensearch.yml
- Default settings
To change a setting, just specify the new one as either persistent or transient. This example shows the flat settings form:
PUT _cluster/settings
{
"persistent" : {
"action.auto_create_index" : false
}
}
You can also use the expanded form, which lets you copy and paste from the GET response and change existing values:
PUT _cluster/settings
{
"persistent": {
"action": {
"auto_create_index": false
}
}
}
For more information about the Cluster Settings API, see Cluster settings.
You can find opensearch.yml
in /usr/share/opensearch/config/opensearch.yml
(Docker) or /etc/opensearch/opensearch.yml
(most Linux distributions) on each node.
You can edit the OPENSEARCH_PATH_CONF=/etc/opensearch
to change the config directory location. This variable is sourced from /etc/default/opensearch
(Debian package) and /etc/sysconfig/opensearch
(RPM package).
If you set your customized OPENSEARCH_PATH_CONF
variable, be aware that other default environment variables will not be loaded.
You don't mark settings in opensearch.yml
as persistent or transient, and settings use the flat form:
cluster.name: my-application
action.auto_create_index: true
compatibility.override_main_response_version: true
The demo configuration includes a number of settings for the Security plugin that you should modify before using OpenSearch for a production workload. To learn more, see Security.
If you are working on a client application running against an OpenSearch cluster on a different domain, you can configure headers in opensearch.yml
to allow for developing a local application on the same machine. Use Cross Origin Resource Sharing so your application can make calls to the OpenSearch API running locally. Add the following lines in your custom-opensearch.yml
file (note that the "-" must be the first character in each line).
- 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