我是ElasticSearch的新手,所以我可能会问些傻话。无论如何,这是我的用例:
我们希望将所有正在进行的消息存储在我们的预订引擎中,此外,请查看是否可以从中获取一些不错的数据。
基本上,我们将5个不同的文档存储在多个索引中:
SessionOpen Response
,带有sessionId
和所有导航数据(DNS
,country
,ip
等)。 Availability Request/ Response
,与sessionId
相同关键词。
Booking Request/ Response
,与sessionId
相同关键词。
我的问题是,是否可以通过其导航数据(例如
sessionId
)过滤country
,然后为这些过滤的sessionId计算Availability Requests
/ Booking
的数量?想法是得到这样的东西:
╔═════════╦════════════════╦══════════╗
║ Country ║ Requests ║ Bookings ║
╠═════════╬════════════════╬══════════╣
║ Spain ║ 300 ║ 5 ║
║ Germany ║ 650 ║ 9 ║
║ France ║ 250 ║ 3 ║
╚═════════╩════════════════╩══════════╝
我已经研究了quite a bit和seems impossible以一次搜索多个索引,但是也许我只是以错误的方式存储了数据。我可以(例如)将所有导航数据存储在每个文档中,然后查询这些数据,但是似乎这可能会浪费空间并且也很重索引。
由于ElasticSearch removed mapping types并鼓励每个索引使用一个文档,所以我不知道如何轻松获取此类数据。
最佳答案
如果您对发出多个请求没有问题,可以:
首先查询SessionOpen Response
以通过任何导航数据获取sessionIds
。
然后使用sessionIds
的结果,您可以对Availability Requests
索引进行查询(也许是Count API)。
使用sessionIds
可以查询您拥有的任何索引并建立所需的最终对象。
关于elasticsearch - 在ElasticSearch 6中的几个索引中按关键字计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49031510/