如何为单个群集(独立群集)ElasticSearch配置单个节点

时间:2013-05-08 03:46:06

标签: elasticsearch elastica

我在本地计算机上安装了弹性搜索,我想将其配置为群集中唯一的单个节点(独立服务器)。这意味着每当我创建一个新索引时,它只能用于我的服务器。其他服务器无法访问它。

我目前的情况是这些索引可供其他服务器使用(服务器在群集中形成),并且他们可以对我的索引进行任何更改。但我不想要它。

我浏览了一些其他博客,但没有得到最佳解决方案。那么请你告诉我相同的步骤吗?

9 个答案:

答案 0 :(得分:57)

我从http://elasticsearch-users.115913.n3.nabble.com/How-to-isolate-elastic-search-node-from-other-nodes-td3977389.html得到了答案。

Kimchy:您将节点设置为本地(true),这意味着它不会在同一个JVM中发现使用网络的其他节点。

在elasticsearch / bin / elasticsearch.yml文件中

node.local: true # disable network

答案 1 :(得分:23)

elasticsearch.yml

# Note, that for development on a local machine, with small indices, it usually
# makes sense to "disable" the distributed features:
#
index.number_of_shards: 1
index.number_of_replicas: 0

在代码中使用相同的配置。

同样要隔离节点,请使用node.local: truediscovery.zen.ping.multicast: false

答案 2 :(得分:16)

以下是ElasticSearch 5的相关信息:

根据changelog,要在ES 5上启用本地模式,您需要将transport.type: local添加到elasticsearch.yml而不是node.local: true

答案 3 :(得分:14)

如果您在代码中使用网络传输,则无法使用,因为node.local仅为您提供LocalTransport:

http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/modules-transport.html#_local_transport

然后诀窍是设置

discovery.zen.ping.multicast: false

在您的elasticsearch.yml中,它会阻止您的节点查找任何其他节点。

http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/modules-discovery-zen.html#multicast

我不确定这是否会阻止其他节点发现你的节点;我只需要它来影响同一网络上具有相同设置的一组节点。

答案 4 :(得分:4)

我想这样做,而不必在我的容器中写/覆盖elasticsearch.yml。这里没有配置文件

在启动elasticsearch之前设置环境变量:

discovery.type=single-node

https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html

答案 5 :(得分:3)

如果您打算在单个节点上运行Elasticseach并将其绑定到公共IP,则两个重要设置是:

vlookup

答案 6 :(得分:1)

所有这些都没有帮助我(我很遗憾没有读过bhdrkn的答案)。对我有用的是每次我需要一个单独的实例时改变elasticsearch的集群名称,其中新节点不是通过多播自动添加的。

只需在elasticsearch.yml中更改cluster.name:{{elasticsearch.clustername}},例如通过Ansible。在构建Dev,QA和Production(这是企业环境中的标准用例)这样的独立阶段时,这非常有用。

如果您使用logstash将数据导入elasticsearch,请不要忘记将相同的群集名称放入输出部分,例如:

output {
    elasticsearch {
        cluster => "{{ elasticsearch.clustername }}"
    }
}

否则您的“logstash - *” - 索引将无法正确构建...

答案 7 :(得分:1)

这可以解决您的问题:

PUT /_all/_settings
{"index.number_of_replicas":0}

使用ES版本5进行测试。

答案 8 :(得分:1)

config 文件中,添加:

  • network.host: 0.0.0.0 [在网络设置中]
  • discovery.type: single-node [在发现和集群形成设置中]