ElasticSearch start up error - the default discovery settings are unsuitable for production use;

In short, if you are running Elasticsearch locally(single node) or just with a single node on the cloud then just use below config in your elasticsearch.yml to avoid the production check, and to make it work, more info about this config in this SO answer:

discovery.type: single-node

This is the configuration I did since I had only one machine that had the Elastic Search db in it (1 node Only).

node.data : true
network.host : 0.0.0.0
discovery.seed_hosts : []
cluster.initial_master_nodes : []

Elasticsearch 7 requires information to form a cluster. This is provided by the following two properties in elasticsearch.yml

cluster.initial_master_nodes : This is used to provide the initial set of nodes whose vote will be consider in master election process.

discovery.seed_hosts : This is used to provide the set of nodes which are master eligible. This should contain the name of all nodes which are master eligible.

So for example you are forming a cluster with three nodes : n0, n1, n2 which are master eligible then you config will look something like this:

cluster.initial_master_nodes: ["n0", "n1", "n2"]
discovery.seed_hosts: ["n0", "n1", "n2"]

Note: cluster.initial_master_nodes is used only once by elastic which is very first time of cluster formation.

For more detailed information read this guide.