我已经设置了一个Elasticsearch集群,其中包含1个主服务器,1个客户端和2个数据节点。客户端和2个数据节点位于一台计算机中,主服务器位于单独的计算机上。 知识产权如下:
192.168.1.3 - master
192.168.1.2:9201 - client
192.168.1.2:9200 - data1
192.168.1.2:9202 - data2
我有属于两个索引(movie-ame
和movie-eur
)的数据,并希望将数据保存在节点中,如下所示。使用logstash我将数据导入数据节点。
电影AME
primary shards in data1
1 replica in data2
logstash.conf
input {
file {
path => "C:\Users\azinneera\Desktop\logstash-5.1.1\bin\data.csv"
start_position => "beginning"
}
}
filter {
csv {
separator => ","
columns => ["ID","MovieName","ReleaseYear","Country","Genres"]
}
}
output {
elasticsearch {
action => "index"
hosts => ["192.168.1.2:9200"]
index => "movie-ame"
}
stdout {codec => rubydebug}
}
电影EUR
primary shards in data2
1 replica in data1
logstash.conf
input {
file {
path => "C:\Users\azinneera\Desktop\logstash-5.1.1\bin\movieeur.csv"
start_position => "beginning"
}
}
filter {
csv {
separator => ","
columns => ["ID","MovieName","ReleaseYear","Country","Genres"]
}
}
output {
elasticsearch {
action => "index"
hosts => ["192.168.1.2:9202"]
index => "movie-eur"
}
stdout {codec => rubydebug}
}
但似乎data1作为两个索引的主要内容,两个索引的副本都在data2中。
答案 0 :(得分:1)
没有错。 Elasticsearch会将主/副本放在不同的节点上,并在每个分片的基础上保持同步。
当您从Elasticsearch查询数据时,它将从主副本或其中一个副本进行查询(因为它们被视为相同的副本)。总的来说,Elasticsearch将处理负载平衡,您不必担心它。
如果您确实想要担心,可以调整一些settings。