使用Elasticsearch查询学习帮助

时间:2017-06-13 22:17:23

标签: elasticsearch elasticsearch-5

我是Elasticsearch(特别是使用5.4.0)查询的新手,我正在尝试通过做一些例子来学习。我以为我有一个简单的例子,但我很难过。

我有一个基于时间的飞机起飞事件索引(离场-Y-M-D)和基于时间的飞机到达事件索引(到达-Y-M-D)。出发文件包含flight numbertimestamp出发,飞机离开的机场(origin)以及计划中的destination机场。

{
  "flight" : "DAL123",
  "timestamp" : 1497390313000,
  "origin" : "KATL",
  "destination" : "KMSP"
}

到货文件的结构基本相同,含义略有不同。他们有flight numbertimestamp到达,飞机最初离开的机场(origin),以及该航班实际降落的机场(destination)。 / p>

{
  "flight" : "DAL123",
  "timestamp" : 1497390313000,
  "origin" : "KATL",
  "destination" : "KMSP"
}

我正在尝试提出一个查询,根据每个机场在过去30天内的出发和到达总数,我将获得前20个最繁忙的机场。对于每个返回的机场,我想要在30天跨度内发生的离港次数,30天跨度内发生的到达次数,这两个数字的总和,以及每日平均出发/到达事件数量(总和) / 30天)。

如果我要编写某种伪sql(因为我觉得它可能会更清楚我要问的内容),它会是这样的:

select
  departures.origin as airport
  count(departures.*) as departures
  count(arrivals.*) as arrivals
  (count(departures.*) + count(arrivals.*)) as total
  (total / 30) as average
from departures
join arrivals
  on departures.origin = arrivals.destination
where timestamp <= midnight_of_today
  and timestamp >= midnight_of_today - 30 days
group by airport
order by count descending
limit 20;

我一直在把很多时间都集中在聚合上,但ES的能力如此强,我担心我会把注意力放在错误的区域。

感谢任何帮助。即使它只是指向我会提供帮助的示例或文档。

0 个答案:

没有答案