Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
<img src="//i.stack.imgur.com/RUiNP.png" height="16" width="18" alt="" class="sponsor tag img">elasticsearch 如何使用Elastisch连接到多个ElasticSearch主机?_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Clojure_Elastisch - Fatal编程技术网 elasticsearch 如何使用Elastisch连接到多个ElasticSearch主机?,elasticsearch,clojure,elastisch,elasticsearch,Clojure,Elastisch" /> elasticsearch 如何使用Elastisch连接到多个ElasticSearch主机?,elasticsearch,clojure,elastisch,elasticsearch,Clojure,Elastisch" />

elasticsearch 如何使用Elastisch连接到多个ElasticSearch主机?

elasticsearch 如何使用Elastisch连接到多个ElasticSearch主机?,elasticsearch,clojure,elastisch,elasticsearch,Clojure,Elastisch,目前,我连接到ElasticSearch群集,如下所示: (esr/connect "localhost:9200") 但我担心可用性,所以计划运行ElasticSearch集群 如何修改Elastisch代码以连接到集群(这样,如果某个节点不可用,我可以退回到另一个节点)?默认情况下它会这样做吗?ElasticSearch java rest客户端似乎提供了这一功能,Elastisch也提供了这一功能?使用ElasticSearch这样的服务的好处之一是,它可以处理等式中的可用性部分,因为E

目前,我连接到ElasticSearch群集,如下所示:

(esr/connect "localhost:9200")
但我担心可用性,所以计划运行ElasticSearch集群


如何修改Elastisch代码以连接到集群(这样,如果某个节点不可用,我可以退回到另一个节点)?默认情况下它会这样做吗?ElasticSearch java rest客户端似乎提供了这一功能,Elastisch也提供了这一功能?

使用ElasticSearch这样的服务的好处之一是,它可以处理等式中的可用性部分,因为ES本身将处理出现故障的节点。您必须对其进行智能配置,这超出了本问题/答案的范围

此处的
connect
功能实际上没有连接;它基本上只是创建一个URI和选项,当您调用像
clojurewerkz.elastisch.rest.document/search
这样的函数时,您会给它提供连接数据,然后在实际的网络操作中使用


因此,您可以在任意多个URL上随时调用
esr/connect
,但不需要这样做。我建议阅读以熟悉体系结构,了解节点、集群、索引、碎片等,并正确配置elasticsearch集群。但就代码本身而言,您与体系结构是隔离的,不必担心这些细节。elasticsearch的REST API也是如此,因此Elasticsh包装器也提供了这一点。

您可以使用多个主机设置集群,这可以使用elasticsearch.yaml配置文件进行配置,如:

.....
.....
discovery.zen.ping.unicast.hosts: ['192.168.10.1:9300', '192.168.10.2:9300']

also elect one node as master and other as slave or data node

# Allow this node to be eligible as a master node (enabled by default):
#
node.master: true
#
# Allow this node to store data (enabled by default):
#
node.data: true
你也可以通过下面的链接来探索更多关于这个问题的信息


谢谢你的回答,Josh。那么连接函数会“发现”集群中的其他URL吗?如果不是的话,如果我最初提供的url不可用,我看不出这是怎么回事。我肯定遗漏了什么。顺便说一下,我发现了一个名为spandex的库,它允许您在创建客户端时指定URL集合(根据官方的elasticsearch rest客户端),因此我觉得这可能更适合我的需要。spandex也进行节点嗅探,连接时只需传递一个节点,它将自行发现其他节点并自动连接到它们。