This section contains modules responsible for various aspects of the functionality in Elasticsearch. Each module has settings which may be:

These settings must be set at the node level, either in the elasticsearch.yml file, or as an environment variable or on the command line when starting a node. They must be set on every relevant node in the cluster.
These settings can be dynamically updated on a live cluster with the cluster-update-settings API.

The modules in this section are:

Cluster-level routing and shard allocation
Settings to control where, when, and how shards are allocated to nodes.
How nodes discover each other to form a cluster.
How many nodes need to join the cluster before recovery can start.
Settings to control the HTTP REST interface.
Global index-related settings.
Controls default network settings.
Node client
A Java node client joins the cluster, but doesn’t hold data or act as a master node.
A built-in scripting language for Elasticsearch that’s designed to be as secure as possible.
Using plugins to extend Elasticsearch.
Custom scripting available in Lucene Expressions, Groovy, Python, and Javascript. You can also write scripts in the built-in scripting language, Painless.
Backup your data with snapshot/restore.
Thread pools
Information about the dedicated thread pools used in Elasticsearch.
Configure the transport networking layer, used internally by Elasticsearch to communicate between nodes.
Tribe nodes
A tribe node joins one or more clusters and acts as a federated client across them.
Cross cluster Search
Cross cluster search enables executing search requests across more than one cluster without joining them and acts as a federated client across them.