如何在两个elasticsearch集群之间迁移数据

时间:2016-11-04 17:27:51

标签: elasticsearch logstash reindex

我一直在网上搜索过去几个小时试图解决这个问题。 我有一个中央ES服务器,消耗我的所有数据。它位于一个私人网络中。在一个单独的网络上,我想提出另一个ES并让客户端访问它,这样他们就可以查看一些统计信息。

我的问题:

  • 根据特定于此客户端的查询结果,将数据提供给此新实例的最佳方法是什么?

  • 对于Logstash,为什么不通过所有索引返回与我的查询匹配的所有文档?

例如:

"query": { 
    "bool": { "must": { "match": { "referrer": "clientsite.com" }}} 
}

根据我的研究,ES 5.0中新的“Remdex from Remote”功能是未来的方式,但大多数互联网文章都指向使用elasticsearch插件作为输入和输出方法的Logstash。

我试过了,但似乎logstash只产生少量结果然后退出。如果我只使用"match_all": {}",它似乎会查看我的所有文件。

这是我的logstash.conf文件:

input {
  elasticsearch {
    hosts => "192.168.0.1"
    index => 'logstash-*'
    query => '{ "query": { "bool": { "must": { "match": { "referrer": "clientsite.com" } } } } }'
    scroll => "1m"
    size => 1000
  }
}

  stdout {
    codec => "rubydebug"
  }
}

我也尝试了这个查询行,没有成功:

query => '{ "query": { "bool": { "must": { "match_all": {} } , "filter": { "term": { "referrer": "uol.com.br" } } } },  "sort": [ "_doc" ] }'

1 个答案:

答案 0 :(得分:0)

Logstash的行为符合预期。让logstash做我想做的事情的是从#34;匹配"到"通配符"。

这一行:

query => '{ "query": { "bool": { "must": { "wildcard": { "referrer": "*clientsite.com*" } } } } }'

现在我能够检索所有文件。

希望它可以帮助别人。