我一直在网上搜索过去几个小时试图解决这个问题。 我有一个中央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" ] }'
答案 0 :(得分:0)
Logstash的行为符合预期。让logstash做我想做的事情的是从#34;匹配"到"通配符"。
这一行:
query => '{ "query": { "bool": { "must": { "wildcard": { "referrer": "*clientsite.com*" } } } } }'
现在我能够检索所有文件。
希望它可以帮助别人。