如何在弹性搜索中实现查询的位置

时间:2014-01-24 19:48:27

标签: elasticsearch

我刚刚成功将我的数据导入ES,例如。它看起来像这样:

"activity": 'viewed',
"sessionId": "000000143198107b3fe510b041138cd33fdd9252aab9808c",
"campaign_id":""
,

"activity": 'campaign_viewed',
"sessionId": "000000143198107b3fe510b041138cd33fdd9252aab9808c",
"campaign_id":"my_campaign"

如您所见,这两个条目具有相同的sessionId,并且由于第二个条目具有campaign_id,我将假设第一个活动(已查看)也是从广告系列生成的。 那么我怎么能算得上: (计算从广告系列生成的活动):

count(activity)
where sessionId in (select sessionid from index where campaign_id="m_campaign") ?

或换句话说:

  

“仅在此期间计算同一会话中的所有活动   会话中有一个'activity = campaign_viewed'。

我知道ES很快就会有聚合。但不确定这是否会解决这类问题。

P.S。我想到的可能的解决方案是: 1.通过sessionId将数据放入存储桶,同时在campaignId字段上执行count和max 所以我可以拥有如下数据组:

6, session1, my_campaign_1
5, session2, my_campaign_1
6, session1, null (assume its the result of max on empty string) 

2然后对step1中生成的bucket数据的campaign_d字段执行另一个聚合 并排除其campaign_id为null的所有数据。最终结果将是:

11, my_campiagn_1

但我不确定这是否可以在ES中完成。

非常感谢! 陈

0 个答案:

没有答案