如何获取ElasticSearch输出?

时间:2019-01-18 07:56:24

标签: elasticsearch logstash elastic-stack

我想将日志文档添加到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,它提供了以下输出:enter image description here

现在,我已经将索引存储在 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:请原谅我的错字)

2 个答案:

答案 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'

我不知道它是如何工作的,但是现在。 谁能解释为什么?