【发布时间】:2014-10-06 15:23:11
【问题描述】:
我设置了 logstash 以将输出发送到 elastisearch:
output {
stdout { codec => rubydebug}
elasticsearch_http {
host => "localhost"
index => "logstash-systest-%{+YYYY.MM.dd}"
document_id => 1
index_type => "systemtest"
}
}
日志文件中有很多行数据,stdout 显示所有这些行正在被解析和格式化。但是,当我使用 match_all 查询查询 elasticsearch 时,返回的唯一结果是来自日志文件最后一行的数据。
POST /logstash-systest-2014.10.06/_search
{
"query": {"match_all": {}}
}
知道为什么只返回最后一行数据吗?我重新启动了elasticsearch和logstash并删除了sincedb,结果还是一样。
【问题讨论】:
-
我不知道您的查询 DSL 是如何工作的。我认为
"query": {"match_all": {}}})应该是"query": { "match_all": {}} -
谢谢。发布问题时出错。我刚刚编辑了它。我使用 match_all 仅获取日志文件的最后一行。
-
你能显示最近几条记录吗?可能是您的
document_id对于所有文档都是相同的。当您尝试索引数据时,它会覆盖以前的记录。所以很明显它会显示最后插入的记录。 -
不相关,但您也可以在没有任何 JSON 的情况下运行
GET /logstash-systest-2014.10.06/_search。它将运行 match_all。