Logstash-plugin elasticsearch:在logstash中应用执行搜索

时间:2016-06-14 10:57:34

标签: elasticsearch logstash

以下是我查询弹性搜索数据库的精确搜索(工作正常):

curl -XPOST 'localhost:9200/test/_search?pretty' -d '
{
"size":1,
"query": {
"match": {
"log.device":"xxxx"
}
},
"sort" : [ {
"_timestamp" :
{
"order":"desc"
}
}]
}'

我想通过使用插件elasticsearch的logstash做同样的事情。但是,没有"尺寸"网站https://www.elastic.co/guide/en/logstash/current/plugins-filters-elasticsearch.html

中提供的选项
elasticsearch {
hosts => ["localhost:9200/test"]
query => "log.device:%{[log][device]}"
sort => "@timestamp:desc"
}

你是如何解决这个问题的?

感谢您的关注和帮助。

1 个答案:

答案 0 :(得分:1)

由于该插件的大小为hardcoded to 1,因此您无需添加任何大小参数。

同时确保对_timestamp而不是@timestamp进行排序。

最后,hosts参数不带任何索引。

所以:

elasticsearch {
   hosts => ["localhost:9200"]
   query => "log.device:%{[log][device]}"
   sort => "_timestamp:desc"
}

如果你真的需要指定一个索引,我们还不支持,但我上周created a PR才支持这个。因此,在合并和发布之前,您将能够使用我的版本而不是官方版本:

$> git clone http://github.com/consulthys/logstash-filter-elasticsearch
$> cd logstash-filter-elasticsearch 
$> gem build logstash-filter-elasticsearch.gemspec
$> $LS_HOME/bin/plugin -install logstash-filter-elasticsearch-2.0.4.gem

安装修改后的插件后,您将能够处理特定的索引:

elasticsearch {
   hosts => ["localhost:9200"]
   index => "test"
   query => "log.device:%{[log][device]}"
   sort => "_timestamp:desc"
}