首页 > 解决方案 > 将 Multisearch 合并到 Elasticsearch 中的单个查询中并在所有索引上执行

问题描述

我有一个python应用程序,4elasticsearch使用elasticsearch-dsl. 它们中的每一个都执行到一个单独的索引。我的目标是将它们与其所有字段合并在一起(例如,如果所有字段中都有一个键samples列表,我需要samples将所有这些字段合并到list最终查询的最终结果中)并执行所有索引。我不确定这里最好的是什么,以及是否有可能elasticsearch-dsl。非常感谢任何建议。

标签: elasticsearchelasticsearch-dsl

解决方案


您可以使用multisearch api,使用它可以组合多个查询,甚至可以定位到多个索引。

例如

GET index1,index2,index3/_msearch
{ }
{"query":{//q1}}
{ }
{"query":{//q2}}
{ }
{"query":{//q3}}
{ }
{"query":{//q4}}

您甚至可以限制特定查询的索引。例如,如果您只想q4执行,index1则更改如下:

GET index1,index2,index3/_msearch
{ }
{"query":{//q1}}
{ }
{"query":{//q2}}
{ }
{"query":{//q3}}
{"index":"index1"}
{"query":{//q4}}

在这种情况下q1q2andq3将在索引上执行index1index2index3whileq4将仅在 上执行index1


推荐阅读