说明以下样例以源端、目的端的elasticsearch集群访问类型一样为例。访问类型一样指的是同样是非安全集群或者同样是安全集群没有开启HTTPS访问。
如果源端、目的端的elasticsearch集群访问类型不一样,可以由下面的3个样例文件的input和output部分自由组合出您需要的配置文件。
非安全集群
当创建的Elasticsearch类型集群未开启安全模式时,接入样例可参考如下。
input {
elasticsearch {
# 源端ES地址
hosts => ["xx.xx.xx.xx:9200", "xx.xx.xx.xx:9200"]
# 需要迁移的索引列表,以逗号分隔
index => "xxx,xxx,xxx"
# 以下保持默认即可
docinfo => true
}
}
filter {
# 去掉一些logstash自己加的字段
mutate {
remove_field => ["@timestamp", "@version"]
}
}
output {
elasticsearch {
# 目的端ES地址
hosts => ["xx.xx.xx.xx:9200", "xx.xx.xx.xx:9200"]
# 目的端索引名称,以下配置为和源端保持一致
index => "%{[@metadata][_index]}"
# 目的数据的_id,如果不需要保留原_id,可以删除以下这行,删除后性能会更好
document_id => "%{[@metadata][_id]}"
# 以下保持默认即可
manage_template => false
ilm_enabled => false
}
}
安全集群(没有开启HTTPS访问)
当创建的集群开启了安全模式,但是关闭了HTTPS访问,接入样例可参考如下。
input {
elasticsearch {
# 源端用户名
user => "xxx"
# 源端密码
password => "xxx"
# 源端ES的地址
hosts => ["xx.xx.xx.xx:9200", "xx.xx.xx.xx:9200"]
# 需要迁移的索引列表,以逗号分隔
index => "xxx,xxx,xxx"
# 以下保持默认即可
docinfo => true
}
}
filter {
# 去掉一些logstash自己加的字段
mutate {
remove_field => ["@timestamp", "@version"]
}
}
output {
elasticsearch {
# 目的端用户名
user => "xxx"
# 目的端密码
password => "xxx"
# 目的端ES地址
hosts => ["xx.xx.xx.xx:9200", "xx.xx.xx.xx:9200"]
# 目的端索引名称,以下配置为和源端保持一致
index => "%{[@metadata][_index]}"
# 目的数据的_id,如果不需要保留原_id,可以删除以下这行,删除后性能会更好
document_id => "%{[@metadata][_id]}"
# 以下保持默认即可
manage_template => false
ilm_enabled => false
}
}
安全集群(开启HTTPS访问)
当创建的集群开启了安全模式,并且开启了HTTPS访问,接入样例可参考如下。
input {
elasticsearch {
# 源端用户名
user => "xxx"
# 源端密码
password => "xxx"
# 源端ES的地址,不需要添加协议,添加HTTPS协议会导致报错
hosts => ["xx.xx.xx.xx:9200", "xx.xx.xx.xx:9200"]
# 需要迁移的索引列表,以逗号分隔
index => "xxx,xxx,xxx"
# 源端ES证书,云上的集群保持以下不变;自建logstash集群的话,可以在集群详情页面直接下载,这里输入对应路径
ca_file => "/rds/datastore/logstash/v7.10.0/package/logstash-7.10.0/extend/certs"
# 以下保持默认即可
docinfo => true
ssl => true
}
}
filter {
# 去掉一些logstash自己加的字段
mutate {
remove_field => ["@timestamp", "@version"]
}
}
output {
elasticsearch {
# 目的端用户名
user => "xxx"
# 目的端密码
password => "xxx"
# 目的端ES地址,不需要添加协议
hosts => ["xx.xx.xx.xx:9200", "xx.xx.xx.xx:9200"]
# 目的端索引名称,以下配置为和源端保持一致
index => "%{[@metadata][_index]}"
# 目的数据的_id,如果不需要保留原_id,可以删除以下这行,删除后性能会更好
document_id => "%{[@metadata][_id]}"
# 源端ES证书,云上的集群保持以下不变;自建logstash集群,则需要在集群详情页面下载到节点里,这里输入对应路径
cacert => "/rds/datastore/logstash/v7.10.0/package/logstash-7.10.0/extend/certs"
# 以下保持默认即可
manage_template => false
ilm_enabled => false
ssl => true
ssl_certificate_verification => false
}
}