我在本地计算机上安装了弹性搜索,我想将其配置为群集中唯一的单个节点(独立服务器).这意味着每当我创建一个新索引时,它只能用于我的服务器.其他服务器无法访问它.
我目前的情况是这些索引可供其他服务器使用(服务器在群集中形成),并且他们可以对我的索引进行任何更改.但我不想要它.
我浏览了一些其他博客,但没有得到最佳解决方案.那么请你告诉我相同的步骤吗?
我从http://elasticsearch-users.115913.n3.nabble.com/How-to-isolate-elastic-search-node-from-other-nodes-td3977389.html得到了答案.
Kimchy:您将节点设置为local(true),这意味着它不会发现使用网络的其他节点,只能在同一个JVM中.
在elasticsearch/bin/elasticsearch.yml文件中
node.local: true # disable network
在 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
以下是ElasticSearch 5的相关信息:
根据更改日志,要在ES 5上启用本地模式,您需要添加transport.type: local
到您的elasticsearch.yml
而不是node.local: true
.
如果您在代码中使用网络传输,则无法使用,因为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
我不确定这是否会阻止其他节点发现你的节点; 我只需要它来影响同一网络上具有相同设置的一组节点.
如果打算在单个节点上运行Elasticseach并将其绑定到公共IP,则两个重要设置是:
network.host:discovery.type: single-node
我想这样做而不必在容器中写入/覆盖elasticsearch.yml。这里没有配置文件
在开始elasticsearch之前设置一个环境变量:
discovery.type=single-node
https://www.elastic.co/guide/zh-CN/elasticsearch/reference/current/docker.html