在ElasticSearch 6中的几个索引中按关键字计算

时间:2018-02-28 14:09:42

标签: elasticsearch

我对ElasticSearch比较新,所以我可能会问一些愚蠢的事情。无论如何,这是我的用例:

我们希望将所有消息传递存储在我们的预订引擎中,另外,看看我们是否可以从中获取一些不错的数据。

基本上我们会在尽可能多的索引中存储5个不同的文档:

  • SessionOpen ResponsesessionId以及所有导航数据(DNScountryip等。)
  • Availability Request/ Response,与sessionId相同 关键词。
  • Booking Request/ Response,与sessionId相同 关键字。

我的问题是,是否可以按其导航数据(例如sessionId)过滤country,然后计算Availability Requests的数量/ Booking对于这些已过滤的sessionId'

想法是得到这样的东西:

╔═════════╦════════════════╦══════════╗
║ Country ║ Requests       ║ Bookings ║
╠═════════╬════════════════╬══════════╣
║ Spain   ║            300 ║        5 ║
║ Germany ║            650 ║        9 ║
║ France  ║            250 ║        3 ║
╚═════════╩════════════════╩══════════╝

我已经查看了它quite a bit并且它seems impossible一次搜索了几个索引,但也许我只是以错误的方式存储数据。我可以(例如)将所有导航数据存储在每个文档中然后查询这些数据,但似乎它可能浪费空间并且在索引上也很重要。

由于ElasticSearch removed mapping types并且每个索引鼓励一个文档,因此我不知道如何轻松获取此类数据。

1 个答案:

答案 0 :(得分:0)

如果您在提出多项请求时遇到问题,可以:

首先通过任何导航数据查询SessionOpen Response以获取sessionIds

然后使用sessionIds的结果,您可以对Availability Requests索引进行查询(可能是Count API)。

使用sessionIds,您可以查询您拥有的任何索引,并构建您需要的最终对象。