在过去的两天里,我一直在努力解决这个问题。我已经设置了两个节点的弹性搜索集群。每个节点的配置非常简单:
node.name: "server1"
discovery.zen.ping.multicast.enabled: false
discovery.zen.ping.unicast.hosts: 192.168.1.212,192.168.1.213
index.store.compress.stored: True
index.store.compress.tv: True
index.number_of_shards: 5
compress.default.type: lzf
cluster.name: mycluster
discovery.zen.minimum_master_nodes: 1
discovery.zen.ping.timeout: 60
index.number_of_replicas: 1
集群节点“看到”彼此并生成预期的分片,但不会生成副本。当我使用“head”插件(用于弹性搜索的 Web UI)时,我只能看到主分片而不是副本。这也从elasticsearch的状态中得到证实:
curl -XGET 'http://localhost:9200/_cluster/health?pretty=true'
{
"cluster_name" : "server1",
"status" : "green",
"timed_out" : false,
"number_of_nodes" : 2,
"number_of_data_nodes" : 2,
"active_primary_shards" : 10,
"active_shards" : 10,
"relocating_shards" : 0,
"initializing_shards" : 0,
"unassigned_shards" : 0
}
另外,我在 elasticsearch 的运行设置中注意到的另一件事是副本设置为 0:
curl -XGET 'http://localhost:9200/_settings?pretty=true'
{
"date" : {
"settings" : {
"index" : {
"refresh_interval" : "1s",
"number_of_shards" : "5",
"creation_date" : "1447756143035",
"store" : {
"type" : "fs"
},
"uuid" : "mpVS_BB9R0WvoF0h8pFVfQ",
"version" : {
"created" : "1040299"
},
"number_of_replicas" : "0"
}
}
},
"scores" : {
"settings" : {
"index" : {
"refresh_interval" : "1s",
"number_of_shards" : "5",
"creation_date" : "1447756144186",
"store" : {
"type" : "fs"
},
"uuid" : "KUlfG4UhQfmMP1L3xQiJOQ",
"version" : {
"created" : "1040299"
},
"number_of_replicas" : "0"
}
}
}
}
任何想法为什么不创建副本?
根据最后一个命令的输出,您的两个索引没有副本,因为您没有告诉它们。
您需要更新索引设置,将其更改为
"number_of_replicas"
您想要的任何数量的副本。ES 文档的更新索引设置页面有一个例子。
这会将所有索引更改为 1 个副本:
这只会将
scores
索引更改为 4 个副本: