我在本地计算机上安装了弹性搜索,我想将其配置为群集中唯一的单个节点(独立服务器)。这意味着每当我创建一个新索引时,它只能用于我的服务器。其他服务器无法访问它。
我目前的情况是这些索引可供其他服务器使用(服务器在群集中形成),并且他们可以对我的索引进行任何更改。但我不想要它。
我浏览了一些其他博客,但没有得到最佳解决方案。那么请你告诉我相同的步骤吗?
答案 0 :(得分:57)
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: true
或discovery.zen.ping.multicast: false
答案 2 :(得分:16)
以下是ElasticSearch 5的相关信息:
根据changelog,要在ES 5上启用本地模式,您需要将transport.type: local
添加到elasticsearch.yml
而不是node.local: true
。
答案 3 :(得分:14)
如果您在代码中使用网络传输,则无法使用,因为node.local
仅为您提供LocalTransport:
然后诀窍是设置
discovery.zen.ping.multicast: false
在您的elasticsearch.yml
中,它会阻止您的节点查找任何其他节点。
我不确定这是否会阻止其他节点发现你的节点;我只需要它来影响同一网络上具有相同设置的一组节点。
答案 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
[在发现和集群形成设置中]