早期的ES版本采用Tribe Node来实现跨集群搜索,从5.3版本开始引入Cross Cluster Search跨集群搜索来替换掉Tribe Node方式。
1.跨集群搜索配置
1.1方式一
PUT _cluster/settings
{
"persistent": {
"cluster": {
"remote": {
"cluster_one": {
"sedds": [
"127.0.0.0:9300"
]
},
"cluster_two": {
"sedds": [
"127.0.0.0:9301"
]
},
"cluster_three": {
"sedds": [
"127.0.0.0:9302"
]
}
}
}
}
}
GET /cluster_one:tmdb,movies/_search
{
"query": {
"match": {
"title": "matrix"
}
}
}
# 设置当cluster_two集群出现问题跳过该集群
PUT _cluster/settings
{
"persistent": {
"cluster.remote.cluster_two.skip_unavailable":true
}
}
#启动三个集群命令
bin/elasticsearch -E cluster.name=cluster0 -E node.name=cluster0node -E path.data=cluster0_data -E http.port=9200 -E transport.port=9300
bin/elasticsearch -E cluster.name=cluster1 -E node.name=cluster1node -E path.data=cluster1_data -E http.port=9201 -E transport.port=9301
bin/elasticsearch -E cluster.name=cluster2 -E node.name=cluster1node -E path.data=cluster2_data -E http.port=9202 -E transport.port=9302
PUT _cluster/settings
{
"persistent": {
"cluster": {
"remote": {
"cluster0": {
"seeds": [
"127.0.0.1:9300"
],
"transport.ping_schedule": "30s"
},
"cluster1": {
"seeds": [
"127.0.0.1:9301"
],
"transport.compress": true,
"skip_unavailable": true
},
"cluster2": {
"seeds": [
"127.0.0.1:9302"
]
}
}
}
}
}
#搜索语句
GET /users,cluster1:users,cluster2:users/_search
{
"query":{
"range": {
"age": {
"gte": 10
}
}
}
}