我想将日志文档添加到ElasticSearch,然后在ElasticSearch中检查该文档。 以下是日志文件的内容:
Jan 1 06:25:43 mailserver14 postfix/cleanup[21403]: BEF25A72965: message-id=<20130101142543.5828399CCAF@mailserver14.example.com>
Feb 2 06:25:43 mailserver15 postfix/cleanup[21403]: BEF25A72999: message-id=<20130101142543.5828399CCAF@mailserver15.example.com>
Mar 3 06:25:43 mailserver16 postfix/cleanup[21403]: BEF25A72998: message-id=<20130101142543.5828399CCAF@mailserver16.example.com>
我可以使用以下logstast配置文件运行logstash实例:
input {
file {
path => "/Myserver/mnt/appln/somefolder/somefolder2/testData/fileValidator-access.LOG"
start_position => "beginning"
sincedb_path => "/dev/null"
}
}
filter {
grok {
patterns_dir => ["/Myserver/mnt/appln/somefolder/somefolder2/logstash/pattern"]
match => { "message" => "%{SYSLOGBASE} %{POSTFIX_QUEUEID:queue_id}: %{GREEDYDATA:syslog_message}" }
}
}
output{
elasticsearch{
hosts => "localhost:9200"
document_id => "test"
index => "testindex"
action => "update"
}
stdout { codec => rubydebug }
}
我将自己的grok模式定义为:
POSTFIX_QUEUEID [0-9A-F] {10,11}
运行logstash实例时,我已成功将数据发送到elasticsearch,它提供了以下输出:
现在,我已经将索引存储在 testindex 下的弹性搜索中,但是当我使用curl -X GET "localhost:9200/testindex"
时,我得到的输出如下:>
{
"depositorypayin" : {
"aliases" : { },
"mappings" : { },
"settings" : {
"index" : {
"creation_date" : "1547795277865",
"number_of_shards" : "5",
"number_of_replicas" : "1",
"uuid" : "5TKW2BfDS66cuoHPe8k5lg",
"version" : {
"created" : "6050499"
},
"provided_name" : "depositorypayin"
}
}
}
}
这不是索引内存储的内容。我想查询索引内的文档。请帮忙。 (PS:请原谅我的错字)
答案 0 :(得分:1)
您在上面使用的API仅返回有关索引本身的信息(文档here)。您需要使用Query DSL来搜索文档。以下Match All Query将返回索引testindex
中的所有文档:
curl -X GET "localhost:9200/testindex/_search" -H 'Content-Type: application/json' -d'
{
"query": {
"match_all": {}
}
}
'
答案 1 :(得分:0)
实际上我已经编辑了配置文件,现在看起来像这样:
input {
. . .
}
filter {
. . .
}
output{
elasticsearch{
hosts => "localhost:9200"
index => "testindex"
}
}
现在我可以使用
从elasticSearch获取数据了curl'localhost:9200 / testindex / _search'
我不知道它是如何工作的,但是现在。 谁能解释为什么?