如何将事件标记为"看着"在Logstash中

时间:2017-02-27 15:28:33

标签: 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时似乎没有必要。

1 个答案:

答案 0 :(得分:1)

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

所以,你做了第一个查询:

{
  "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"
      }
    }
  ]
}

依此类推,你可以保证永远不会有重复的事件。