我尝试在elasticsearch.yaml文件中给出以下配置
network.host: aa.bbb.ccc.dd
这是我的 IPv4 地址
和http.port: 9200
当我尝试在我的Windows机器上运行elasticsearch.bat时,对此的响应如下:
the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured
我真的不太确定集群初始化要配置什么。默认值为
discovery.seed_hosts: ["host1", "host2"]
和 cluster.initial_master_nodes: ["node-1", "node-2"]
简而言之,如果您在本地运行 Elasticsearch(单节点)或仅在云上使用单节点,则只需在
elasticsearch.yml
中使用以下配置即可避免生产检查,并使其正常工作,有关此配置的更多信息在这个SO答案中:
discovery.type: single-node
这是我所做的配置,因为我只有一台装有 Elastic Search 数据库的机器(仅限 1 个节点)。
node.data : true
network.host : 0.0.0.0
discovery.seed_hosts : []
cluster.initial_master_nodes : []
Elasticsearch 7 需要信息来形成集群。这是由 elasticsearch.yml 中的以下两个属性提供的
cluster.initial_master_nodes
:这用于提供初始节点集,其投票将在主选举过程中考虑。
discovery.seed_hosts
:这用于提供符合主资格的节点集。这应该包含所有符合主节点资格的节点的名称。
例如,您正在形成一个包含三个节点的集群:
n0
、n1
、n2
,它们是符合主条件的,那么您的配置将如下所示:
cluster.initial_master_nodes: ["n0", "n1", "n2"]
discovery.seed_hosts: ["n0", "n1", "n2"]
注意:
cluster.initial_master_nodes
仅被elastic使用一次,这是第一次形成簇。
有关更多详细信息,请阅读此指南。
我从 docker 容器的角度添加我的答案。我最初尝试在同一个集群中运行 3 个 Elasticsearch 节点,然后尝试仅运行 1 个节点,但遇到了同样的问题。为了解决这个问题,我删除了 docker 卷。请注意,我的 docker elasticsearch 节点没有数据,因此不会因 docker 卷删除而丢失数据。
https://discuss.elastic.co/t/how-my-config-file-should-be-on-publish-mode-with-a-single-node/189034
官方命令是以集群形式启动。如果想以单机形式启动,可以使用以下命令: {docker run --name elasticsearch --net elastic -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -t docker.elastic.co/elasticsearch/elasticsearch:7.17.21}