所以,我有2个索引在我的Elasticsearch服务器。我需要从第一个索引中收集结果,对于每个结果,我需要从第二个索引中收集信息。
怎么做?我尝试了foreach处理器,但是到目前为止还没有成功。
Tky
我需要从第一个索引收集结果,对于每个结果,我需要从第二个索引收集信息。
除非你创建父/子关系,否则在ElasticSearch中不可能。
然而,注意:
在Elasticsearch中,良好性能的关键是将数据反规范化到文档中。每个join字段、has_child或has_parent查询都会给您的查询性能增加一个显著的负担.
处理应用程序中多个索引的读取或重新考虑索引映射
foreach处理器用于摄取管道,即在索引时完成的东西。因此,当你试图收集结果时,它不会帮助你。
一般来说,在一个查询中不可能查询另一个索引(它可能位于另一个分片上)。
在某些情况下,可以使用连接字段。有性能影响,仅在特定情况下推荐使用。
如果你不在连接字段用例中,你可以重构你的数据来使用嵌套对象,它将比连接字段性能更高。
否则,您最好在应用程序代码中运行多个查询(也许您可以获取所有的"次要查询")。结果只使用一个查询,所以你总共有2个查询?)