我对ElasticSearch比较新,所以我可能会问一些愚蠢的事情。无论如何,这是我的用例:
我们希望将所有消息传递存储在我们的预订引擎中,另外,看看我们是否可以从中获取一些不错的数据。
基本上我们会在尽可能多的索引中存储5个不同的文档:
SessionOpen Response
,sessionId
以及所有导航数据(DNS
,country
,ip
等。)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并且每个索引鼓励一个文档,因此我不知道如何轻松获取此类数据。
答案 0 :(得分:0)
如果您在提出多项请求时遇到问题,可以:
首先通过任何导航数据查询SessionOpen Response
以获取sessionIds
。
然后使用sessionIds
的结果,您可以对Availability Requests
索引进行查询(可能是Count API)。
使用sessionIds
,您可以查询您拥有的任何索引,并构建您需要的最终对象。