curl - 如何在Logstash中将事件标记为 “Looked At”

标签 curl elasticsearch get logstash put

因此,我正在使用此查询查询Logstash,该查询返回堆栈顶部的所有内容:

{
"query": {
"match_all": { }
},
"size": 7,
"_source": {
"includes": [ "transport", "dest", "packet_source", "id_orig_p", "id_orig_p", "id_orig_h", "conn_state", "id_resp_h", "id_resp_p", "service", "proto" ]
} ,
"sort": [
  {
    "@timestamp": {
    "order": "desc"
  }
}
] 
} 

但是,当我查询数据时,如果没有新数据传入,则会得到重复。是否有一种方法可以用整数字段或其他内容将每个唯一事件ID标记为“LookedAt”?

我需要这样做以减少C#中查询的垃圾收集,但是存储所有ID并进行字符串比较非常繁琐,当我拥有Logstash时似乎不必要。

最佳答案

我建议使用时间戳并将其包含在查询中。例如,从第一个查询的结果中,您可以获取最新事件的时间戳(即结果中的第一个),然后在进行第二个查询时,您要询问其时间戳高于该时间戳的事件。

因此,您进行第一个查询:

{
  "query": {
    "match_all": {}
  },
  "size": 7,
  "_source": {
    "includes": [
      "transport",
      ...
    ]
  },
  "sort": [
    {
      "@timestamp": {
        "order": "desc"
      }
    }
  ]
}

然后说在结果中,最新事件的时间戳是2017-02-28T10:02:23.000Z

下一个查询将是:
{
  "query": {
    "range": {
      "timestamp": {
        "gt": "2017-02-28T10:02:23.000Z"
      }
    }
  },
  "size": 7,
  "_source": {
    "includes": [
      "transport",
      ...
    ]
  },
  "sort": [
    {
      "@timestamp": {
        "order": "desc"
      }
    }
  ]
}

依此类推,将确保您永远不会有重复的事件。

关于curl - 如何在Logstash中将事件标记为 “Looked At”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42489534/

相关文章:

elasticsearch - 为什么查询 “apache”在Elasticsearch中的以下文档中不起作用?

android - 如何将使用 OkHttp 的 GET 请求的结果保存在局部变量中?

php - 移动到新服务器后 cURL 出现 SSL 问题

php - Pinterest API 未按预期工作

php - Curl post请求不返回数据

php - 使用 php 从子目录中获取 azure blob 文件

elasticsearch - Elasticsearch Nest是否不遵守POCO字段上的index = not_indexed?

python - 使用python将日志文件上传到elasticsearch

http - Angularjs 多个 $http.get 请求

php - 如何在 PHP 中通过 GET 请求传递输入名称