[[modules]]
= Modules

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

_static_::

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.

_dynamic_::

These settings can be dynamically updated on a live cluster with the
<<cluster-update-settings,cluster-update-settings>> API.

The modules in this section are:

<<modules-discovery,Discovery and cluster formation>>::

    How nodes discover each other, elect a master and form a cluster.

<<modules-cluster,Shard allocation and cluster-level routing>>::

    Settings to control where, when, and how shards are allocated to nodes.

<<modules-gateway,Gateway>>::

    How many nodes need to join the cluster before recovery can start.

<<modules-http,HTTP>>::

    Settings to control the HTTP REST interface.

<<modules-indices,Indices>>::

    Global index-related settings.

<<modules-network,Network>>::

    Controls default network settings.

<<modules-node,Node client>>::

    A Java node client joins the cluster, but doesn't hold data or act as a master node.

<<modules-scripting-painless,Painless>>::

    A built-in scripting language for Elasticsearch that's designed to be as secure as possible.

<<modules-plugins,Plugins>>::

    Using plugins to extend Elasticsearch.

<<modules-scripting,Scripting>>::

    Custom scripting available in Lucene Expressions, ad Groovy. You can also
    write scripts in the built-in scripting language,
    <<modules-scripting-painless, Painless>>.

<<modules-snapshots,Snapshot/Restore>>::

    Backup your data with snapshot/restore.

<<modules-threadpool,Thread pools>>::

    Information about the dedicated thread pools used in Elasticsearch.

<<modules-transport,Transport>>::

    Configure the transport networking layer, used internally by Elasticsearch
    to communicate between nodes.

<<modules-remote-clusters, Remote clusters>>::

    Remote clusters are used in features that work by connecting across clusters
    on the transport layer.

<<modules-cross-cluster-search, 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.
--


include::modules/discovery.asciidoc[]

include::modules/cluster.asciidoc[]

include::modules/gateway.asciidoc[]

include::modules/http.asciidoc[]

include::modules/indices.asciidoc[]

include::modules/network.asciidoc[]

include::modules/node.asciidoc[]

:edit_url:
include::modules/plugins.asciidoc[]

include::modules/scripting.asciidoc[]

include::modules/snapshots.asciidoc[]

include::modules/threadpool.asciidoc[]

include::modules/transport.asciidoc[]

include::modules/remote-clusters.asciidoc[]

include::modules/cross-cluster-search.asciidoc[]