[float]
[[modules-node-xpack]]
== [xpack]#X-Pack node settings#

//This content is referenced from the elastic/elasticsearch/docs/reference/modules/node.asciidoc

If {xpack} is installed, there is an additional node type:

<<ml-node,Machine learning node>>::

A node that has `xpack.ml.enabled` and `node.ml` set to `true`, which is the
default behavior when {xpack} is installed. If you want to use {xpackml}
features, there must be at least one {ml} node in your cluster. For more
information about {xpackml} features,
see {xpack-ref}/xpack-ml.html[Machine Learning in the Elastic Stack].

IMPORTANT: Do not set use the `node.ml` setting unless {xpack} is installed.
Otherwise, the node fails to start.

If {xpack} is installed, nodes are master-eligible, data, ingest, and {ml}
nodes by default. As the cluster grows and in particular if you have large
{ml} jobs, consider separating dedicated master-eligible nodes from dedicated
data nodes and dedicated {ml} nodes.

To create a dedicated master-eligible node when {xpack} is installed, set:

[source,yaml]
-------------------
node.master: true <1>
node.data: false <2>
node.ingest: false <3>
node.ml: false <4>
xpack.ml.enabled: true <5>
-------------------
<1> The `node.master` role is enabled by default.
<2> Disable the `node.data` role (enabled by default).
<3> Disable the `node.ingest` role (enabled by default).
<4> Disable the `node.ml` role (enabled by default in {xpack}).
<5> The `xpack.ml.enabled` setting is enabled by default in {xpack}.

To create a dedicated data node when {xpack} is installed, set:

[source,yaml]
-------------------
node.master: false <1>
node.data: true <2>
node.ingest: false <3>
node.ml: false <4>
-------------------
<1> Disable the `node.master` role (enabled by default).
<2> The `node.data` role is enabled by default.
<3> Disable the `node.ingest` role (enabled by default).
<4> Disable the `node.ml` role (enabled by default in {xpack}).

To create a dedicated ingest node when {xpack} is installed, set:

[source,yaml]
-------------------
node.master: false <1>
node.data: false <2>
node.ingest: true <3>
cluster.remote.connect: false <4>
node.ml: false <5>
-------------------
<1> Disable the `node.master` role (enabled by default).
<2> Disable the `node.data` role (enabled by default).
<3> The `node.ingest` role is enabled by default.
<4> Disable cross-cluster search (enabled by default).
<5> Disable the `node.ml` role (enabled by default in {xpack}).

To create a dedicated coordinating node when {xpack} is installed, set:

[source,yaml]
-------------------
node.master: false <1>
node.data: false <2>
node.ingest: false <3>
cluster.remote.connect: false <4>
node.ml: false <5>
-------------------
<1> Disable the `node.master` role (enabled by default).
<2> Disable the `node.data` role (enabled by default).
<3> Disable the `node.ingest` role (enabled by default).
<4> Disable cross-cluster search (enabled by default).
<5> Disable the `node.ml` role (enabled by default in {xpack}).

[float]
[[ml-node]]
=== [xpack]#Machine learning node#

The {xpackml} features provide {ml} nodes, which run jobs and handle {ml} API
requests. If `xpack.ml.enabled` is set to true and `node.ml` is set to `false`,
the node can service API requests but it cannot run jobs.

If you want to use {xpackml} features in your cluster, you must enable {ml}
(set `xpack.ml.enabled` to `true`) on all master-eligible nodes. Do not use
these settings if you do not have {xpack} installed.

For more information about these settings, see <<ml-settings>>.

To create a dedicated {ml} node, set:

[source,yaml]
-------------------
node.master: false <1>
node.data: false <2>
node.ingest: false <3>
cluster.remote.connect: false <4>
node.ml: true <5>
xpack.ml.enabled: true <6>
-------------------
<1> Disable the `node.master` role (enabled by default).
<2> Disable the `node.data` role (enabled by default).
<3> Disable the `node.ingest` role (enabled by default).
<4> Disable cross-cluster search (enabled by default).
<5> The `node.ml` role is enabled by default in {xpack}.
<6> The `xpack.ml.enabled` setting is enabled by default in {xpack}.
