Hello, team!. I have created 4 data nodes and i am trying to modify the 2 of them as ML nodes. Do you know how i can do it using API calls?. “I dont have access in opensearch.yml”.
Thank you.
what kind of deployment does your cluster have?
- if you’ve already indexed documents and scatter their shards multiple nodes, reindexing or gathering to have only one or two primary shards in Data Nodes you want to keep.
@babist
Use opensearch-node repurpose
tool to clean up the existing indices and their metadata.
Suppose you’d assigned [“data”, “ingest”] roles to a cluster_manger
node, there wold be index metadata so that it might lead the node to be excluded the cluster by OpenSearchUncaughtExceptionHandler.
opensearch-data-1 | [2025-04-24T04:14:30,906][ERROR][o.o.b.OpenSearchUncaughtExceptionHandler] [opensearch-data-1] uncaught exception in thread [main]
opensearch-data-1 | org.opensearch.bootstrap.StartupException: java.lang.IllegalStateException: node does not have the data and cluster_manager roles but has index metadata: [/usr/share/opensearch/data/nodes/0/indices/JWEWr8gXT52lynBu4gw3kg/_state, /usr/share/opensearch/data/nodes/0/indices/c-pQ-BxVQ96yv6vIO-VeNQ/_state, /usr/share/opensearch/data/nodes/0/indices/mwVxO-9pRJODVG9ZpABQMQ/_state, /usr/share/opensearch/data/nodes/0/indices/MWdAMU9sQFeQ7sHjVikwjQ/_state, /usr/share/opensearch/data/nodes/0/indices/L3GmO7iQRi-AOvplAaaDJw/_state, /usr/share/opensearch/data/nodes/0/indices/1Pnk9bZdRv-aos2k95VyAA/_state, /usr/share/opensearch/data/nodes/0/indices/7nrTje9yQpG364-noDJHEw/_state, /usr/share/opensearch/data/nodes/0/indices/715nVb1OTCCQW8TAQ-hfMQ/_state, /usr/share/opensearch/data/nodes/0/indices/-j8dy0qwRMiBeM8aKgKVVQ/_state, /usr/share/opensearch/data/nodes/0/indices/F5w8AkigQ8OS_qhz6sAUSQ/_state, /usr/share/opensearch/data/nodes/0/indices/xtfwQ505SjGPZFsQJlbkBg/_state, /usr/share/opensearch/data/nodes/0/indices/wVP2d_U7TiCrCTtf2b62-A/_state, /usr/share/opensearch/data/nodes/0/indices/7NZAVTpcTJCafFdQepTcbg/_state, /usr/share/opensearch/data/nodes/0/indices/ESQ85qqARWS1Rp787d8R5Q/_state, /usr/share/opensearch/data/nodes/0/indices/NLrtQbtdQMWLq8yuuLWaFA/_state]. Use 'opensearch-node repurpose' tool to clean up
opensearch-data-1 | at org.opensearch.bootstrap.OpenSearch.init(OpenSearch.java:185) ~[opensearch-2.19.1.jar:2.19.1]
opensearch-data-1 | at org.opensearch.bootstrap.OpenSearch.execute(OpenSearch.java:172) ~[opensearch-2.19.1.jar:2.19.1]
opensearch-data-1 | at org.opensearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:104) ~[opensearch-2.19.1.jar:2.19.1]
opensearch-data-1 | at org.opensearch.cli.Command.mainWithoutErrorHandling(Command.java:138) ~[opensearch-cli-2.19.1.jar:2.19.1]
opensearch-data-1 | at org.opensearch.cli.Command.main(Command.java:101) ~[opensearch-cli-2.19.1.jar:2.19.1]
opensearch-data-1 | at org.opensearch.bootstrap.OpenSearch.main(OpenSearch.java:138) ~[opensearch-2.19.1.jar:2.19.1]
opensearch-data-1 | at org.opensearch.bootstrap.OpenSearch.main(OpenSearch.java:104) ~[opensearch-2.19.1.jar:2.19.1]
opensearch-data-1 | Caused by: java.lang.IllegalStateException: node does not have the data and cluster_manager roles but has index metadata: [/usr/share/opensearch/data/nodes/0/indices/JWEWr8gXT52lynBu4gw3kg/_state, /usr/share/opensearch/data/nodes/0/indices/c-pQ-BxVQ96yv6vIO-VeNQ/_state, /usr/share/opensearch/data/nodes/0/indices/mwVxO-9pRJODVG9ZpABQMQ/_state, /usr/share/opensearch/data/nodes/0/indices/MWdAMU9sQFeQ7sHjVikwjQ/_state, /usr/share/opensearch/data/nodes/0/indices/L3GmO7iQRi-AOvplAaaDJw/_state, /usr/share/opensearch/data/nodes/0/indices/1Pnk9bZdRv-aos2k95VyAA/_state, /usr/share/opensearch/data/nodes/0/indices/7nrTje9yQpG364-noDJHEw/_state, /usr/share/opensearch/data/nodes/0/indices/715nVb1OTCCQW8TAQ-hfMQ/_state, /usr/share/opensearch/data/nodes/0/indices/-j8dy0qwRMiBeM8aKgKVVQ/_state, /usr/share/opensearch/data/nodes/0/indices/F5w8AkigQ8OS_qhz6sAUSQ/_state, /usr/share/opensearch/data/nodes/0/indices/xtfwQ505SjGPZFsQJlbkBg/_state, /usr/share/opensearch/data/nodes/0/indices/wVP2d_U7TiCrCTtf2b62-A/_state, /usr/share/opensearch/data/nodes/0/indices/7NZAVTpcTJCafFdQepTcbg/_state, /usr/share/opensearch/data/nodes/0/indices/ESQ85qqARWS1Rp787d8R5Q/_state, /usr/share/opensearch/data/nodes/0/indices/NLrtQbtdQMWLq8yuuLWaFA/_state]. Use 'opensearch-node repurpose' tool to clean up
opensearch-data-1 | at org.opensearch.env.NodeEnvironment.ensureNoIndexMetadata(NodeEnvironment.java:1240) ~[opensearch-2.19.1.jar:2.19.1]
opensearch-data-1 | at org.opensearch.env.NodeEnvironment.<init>(NodeEnvironment.java:395) ~[opensearch-2.19.1.jar:2.19.1]
opensearch-data-1 | at org.opensearch.node.Node.<init>(Node.java:561) ~[opensearch-2.19.1.jar:2.19.1]
opensearch-data-1 | at org.opensearch.node.Node.<init>(Node.java:451) ~[opensearch-2.19.1.jar:2.19.1]
opensearch-data-1 | at org.opensearch.bootstrap.Bootstrap$5.<init>(Bootstrap.java:242) ~[opensearch-2.19.1.jar:2.19.1]
opensearch-data-1 | at org.opensearch.bootstrap.Bootstrap.setup(Bootstrap.java:242) ~[opensearch-2.19.1.jar:2.19.1]
opensearch-data-1 | at org.opensearch.bootstrap.Bootstrap.init(Bootstrap.java:404) ~[opensearch-2.19.1.jar:2.19.1]
opensearch-data-1 | at org.opensearch.bootstrap.OpenSearch.init(OpenSearch.java:181) ~[opensearch-2.19.1.jar:2.19.1]
opensearch-data-1 | ... 6 more