2016-11-04 169 views
0

我一直在网上搜索最近几个小时试图弄清楚这一点。 我有一个中央ES服务器,它使用我所有的数据。它坐落在一个私人网络中。在另一个网络上,我想提出另一个ES并让客户访问它,以便他们可以检查一些统计数据。如何在两个elasticsearch集群之间迁移数据

我的问题:

  • 什么是数据馈送到基于查询结果,这种新的实例,它是特定于该客户端的最佳方式?

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

例如:

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

从我的研究,新的“重新索引从远程”在ES 5.0的特点是未来的发展方向,但大多数互联网文章指出使用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" ] }' 
+0

听起来你需要在你的查询中进行一些过滤(通过创建日期或通过ID,如果它是int)。 –

+0

在我的最后一个查询中,我添加了一个日期过滤器来控制我希望复制的时间片。谢谢你的提示。 –

回答

0

Logstash被表现如预期。是什么让logstash做了我想让它从“匹配”变为“通配符”的变化。

这一行:

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

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

希望它可以帮助别人。

+0

使用通配符不是一种好的做法,因为这种类型的查询是在not_analyzed字段上执行的,并且在处理大数据集时会导致性能问题。 –