如何通过另一个索引的 ID 解析数据?

How to resolve data by ID from another index?

我有 2 个索引:imagesgallerygallery 只有图像的 ID。 Elasticsearch 是否有办法 return/resolve 响应中的数据?还是我需要做 2 个查询并自己解决它们?

// image
{ id: 1, url: 'foo.bar' }
{ id: 2, url: 'foo.bar' }

// gallery
[1,2]

// result should be
[{ id: 1, url: 'foo.bar' }, { id: 2, url: 'foo.bar' }]

参考Elasticsearch documentation on joining queries,但是这两个选项都是针对同一个索引,Elasticsearch不提供像sql这样的JOIN操作,因为它的成本高且不利于分布式系统的设计。

即使您选择文档中提到的选项之一,它的成本也会比普通查询高,我建议您遵循。

  1. 如果您的数据 gallary 索引非常少,只有 ID,那么进行第二次查询的成本并不高,在这种情况下,您无需更改任何内容。
  2. 如果您关心性能,您可以选择其中一个选项,并通过少量测试将性能与第一个选项进行比较,您可以选择最适合您的那个。您可以使用 Reindex API 重新索引具有所需映射的同一索引中的数据。