【问题标题】:Elasticsearch match_all returns only one resultElasticsearch match_all 只返回一个结果
【发布时间】: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。

标签: elasticsearch logstash


【解决方案1】:

这里的问题是您设置了文档ID。所以每一行都有相同的id。这意味着每一行都会被下一行擦除。

【讨论】:

  • 谢谢,成功了!我正在尝试让 python elasticsearch 客户端与 elasticsearch 对话,其中一个函数 elasticsearch.exists() 需要一个文档 ID,因此必须在配置文件中设置它。知道如何从 elasticsearch 获取现有文档 ID 的列表吗?
  • 不确定我是否理解您想要实现的目标。也许您应该打开一个包含所有详细信息的新问题?
猜你喜欢
  • 2013-11-19
  • 2019-05-04
  • 2021-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-17
  • 2016-05-23
相关资源
最近更新 更多