使用华为云Logstash迁移Elasticsearch集群的Logstash配置文件样例
本文以源端和目的端是相同类型的CSS Elasticsearch集群为例,介绍使用Logstash进行集群迁移的配置文件样例。当源端和目的端的Elasticsearch集群类型不同时,可以参考本文样例中的input和output模块自由组合出合适的配置文件。
查看集群类型
- 登录云搜索服务管理控制台。
- 在左侧导航栏选择“集群管理 > Elasticsearch”,进入Elasticsearch集群列表。
- 选择源端或目的端Elasticsearch集群,单击集群名称,进入详情页面。
- 在集群详情页面查看集群是否开启安全模式,是否开启HTTPS访问。如图1所示,表示该Elasticsearch集群是使用HTTPS访问的安全集群。
表1 不同集群类型之间进行数据迁移的Logstash配置文件样例 迁移场景
Logstash配置文件样例
非安全集群之间进行数据迁移
使用HTTP访问的安全集群之间进行数据迁移
使用HTTPS访问的安全集群之间进行数据迁移
非安全集群的Logstash配置文件样例
当源端和目的端的Elasticsearch集群都是非安全模式时,Logstash配置文件可参考如下。
input { elasticsearch { # 源端Elasticsearch地址 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 { # 目的端Elasticsearch地址 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 } }
安全集群(使用HTTP访问)的Logstash配置文件样例
当源端和目的端的Elasticsearch集群都是安全模型且未启用HTTPS访问时,Logstash配置文件可参考如下。
input { elasticsearch { # 源端用户名 user => "xxx" # 源端密码 password => "xxx" # 源端Elasticsearch的地址 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" # 目的端Elasticsearch地址 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访问)的Logstash配置文件样例
当源端和目的端的Elasticsearch集群都是安全模式且开启了HTTPS访问时,Logstash配置文件可参考如下。
input { elasticsearch { # 源端用户名 user => "xxx" # 源端密码 password => "xxx" # 源端Elasticsearch的地址 hosts => ["xx.xx.xx.xx:9200", "xx.xx.xx.xx:9200"] # 需要迁移的索引列表,以逗号分隔 index => "xxx,xxx,xxx" # 源端Elasticsearch集群的证书,云上的集群保持以下值不变;自建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" # 目的端Elasticsearch地址 hosts => ["xx.xx.xx.xx:9200", "xx.xx.xx.xx:9200"] # 目的端索引名称,以下配置为和源端保持一致 index => "%{[@metadata][_index]}" # 目的数据的_id,如果不需要保留原_id,可以删除以下这行,删除后性能会更好 document_id => "%{[@metadata][_id]}" # 目的端Elasticsearch集群的证书,云上的集群保持以下值不变;自建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 } }