有没有办法在一台主机上部署不同的Elasticsearch集群来演示Cross Cluster Search?
Is there a way to deploy different Elasticsearch clusters in one host to demonstrate Cross Cluster Search?
我有 3 个不同的 Elasticsearch 容器(我通过下一个命令 run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.9.2
部署)
我想将它们用作 3 个集群,每个集群中有 1 个节点。之后我将其中的 2 个定义为一个集群的远程集群(端口 9200
是“主”,9201
9202
是远程)。定义它我使用:
cluster:
remote:
cluster_one:
seeds: 127.0.0.1:9201
cluster_two:
seeds: 127.0.0.1:9202
我尝试 运行 搜索
GET /cluster_one:twitter/_search
{
"query": {
"match": {
"user": "kimchy"
}
}
}
但它没有用,我认为它与我定义集群的方式有关,但我没有发现我做错了什么。
documentation 告诉我们:
Cross-cluster search and cross-cluster replication require the remote_cluster_client role.
此外,remote cluster 页面告诉我们
role: By default, any non-master-eligible node can act as a gateway node. Dedicated master nodes are never selected as gateway nodes.
由于默认情况下所有节点都具有master
和data
角色,因此没有节点可以充当网关节点并且cross-cluster操作无法进行。
我有一个工作 there。
需要使用 env 变量(正如我在提供的示例中所做的那样)或 elasticsearch.yml
.
在以下集群中的每个节点上完成静态远程集群定义
您需要匹配的 url 是托管网关节点的 docker 服务的 url。
端口需要与远程节点的transport port相匹配。
我有 3 个不同的 Elasticsearch 容器(我通过下一个命令 run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.9.2
部署)
我想将它们用作 3 个集群,每个集群中有 1 个节点。之后我将其中的 2 个定义为一个集群的远程集群(端口 9200
是“主”,9201
9202
是远程)。定义它我使用:
cluster:
remote:
cluster_one:
seeds: 127.0.0.1:9201
cluster_two:
seeds: 127.0.0.1:9202
我尝试 运行 搜索
GET /cluster_one:twitter/_search
{
"query": {
"match": {
"user": "kimchy"
}
}
}
但它没有用,我认为它与我定义集群的方式有关,但我没有发现我做错了什么。
documentation 告诉我们:
Cross-cluster search and cross-cluster replication require the remote_cluster_client role.
此外,remote cluster 页面告诉我们
role: By default, any non-master-eligible node can act as a gateway node. Dedicated master nodes are never selected as gateway nodes.
由于默认情况下所有节点都具有master
和data
角色,因此没有节点可以充当网关节点并且cross-cluster操作无法进行。
我有一个工作 there。
需要使用 env 变量(正如我在提供的示例中所做的那样)或 elasticsearch.yml
.
您需要匹配的 url 是托管网关节点的 docker 服务的 url。
端口需要与远程节点的transport port相匹配。