ElasticSearch:一系列事件(是否可以创建有序列表?)

时间:2015-01-04 00:19:44

标签: elasticsearch aggregation logstash sequences

我正在使用最新版本的Logstash,ElasticSearch和Kibana来解析/过滤/库存/查询和可视化日志。 我正在开展一系列活动。


此日志记录用户在不同的时间(按特定顺序)制作事件。

示例:

 {
   "name" : "user1",
   "event" : "event1",
   "timestamp" : 31/Dec/2014:23:50:00 +0000
 }
 {
   "name" : "user1",
   "event" : "event2",
   "timestamp" : 31/Dec/2014:23:52:00 +0000
 }
 {
   "name" : "user2",
   "event" : "event1",
   "timestamp" : 31/Dec/2014:23:52:00 +0000
 }
 {
   "name" : "user2",
   "event" : "event1",
   "timestamp" : 31/Dec/2014:23:57:00 +0000
 }
 {
   "name" : "user3",
   "event" : "event3",
   "timestamp" : 31/Dec/2014:23:50:00 +0000
 }

我想计算每个可能的事件序列的唯一身份用户数。回答了这个问题:有多少用户做了一系列事件?

对于这个例子,作为查询的结果,我想要这样的东西:

 "EVENTS" : [
     {
         "key" : "event1", "doc_count" : 2,
         "CHILDREN " : [
             {"key" : "event2", "doc_count" : 1}
             {"key" : "event1", "doc_count" : 1}
         ]
     },
     {
         "key" : "event3","doc_count" : 1     
     }
 ]

我们可以说: 有2个用户以“event1”开头,1个用“event2”继续,其他用“event1” 并且有1个用户以“event3”开头。


所以,我想以订单方式汇总用户的活动(从第一个开始,然后按照以下事件)。

我是新手,但我已经做了很多研究和大头脑风暴。

  • 我已经对字段“name”进行了聚合,然后按字段“事件”进行聚合,按时间戳排序,这给了我用户订购的事件。但是,我不能在这个桶结果上进行聚合,先取第二个......或者我会错过什么?
  • 然后我想知道一种索引数据的新方法:为每个用户创建唯一的id,并在一个有序的列表中一次又一次地更新/ upsert事件。因此,能够通过附加项目并保留订单来操作数组字段。我已经尝试过tag,但这是一个非有序的数组,因此我无法访问tags [0],tags [1] ....嵌套对象也是如此。我没错?
  • 我最后的想法是,如果我可以通过将迭代字段名称作为外观顺序添加一个有序列表。类似于:{"0":"event1", "1":"event2", "2":"event3"}

但我无法找到一种简单的方法来做到这一点。

任何想法/帮助?

谢谢!

0 个答案:

没有答案