从两个索引进行交叉搜索

时间:2019-03-05 06:54:43

标签: elasticsearch

我在Elastic中有两个索引:Track和Messages。 每个索引都有ServiceId字段。

“曲目”索引中的搜索始终由索引中的字段(精确值)执行。 邮件中的搜索始终通过索引中的自由文本搜索来执行。

我需要从两个索引中进行交叉搜索。要通过“跟踪”索引中的确切字段值找到ServiceId,然后通过自由文本搜索从“消息”索引中找到ServiceId,然后将结果与ServiceIds数组相交。

对用户而言,实际结果是从交叉操作中接收到的这些ServiceId的轨道列表。

我该怎么办?每次搜索(来自“跟踪和消息”)都应返回所有文档,然后才应执行相交,但据我了解,Elastic无法返回所有文档(假设每个索引中都有亿万个文档),并且相交操作不正确。 ..

Intersectional search from two indices

1 个答案:

答案 0 :(得分:0)

可以通过使用别名来实现。
请参阅https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-aliases.html,以获取更多信息。
在两个索引中都应该有一些公共字段,在这种情况下,它是serviceIds。