【发布时间】:2021-11-22 07:26:14
【问题描述】:
我需要帮助来搜索具有不同字段的同一集群的不同索引。例如:如果我有一个集群名称 demo,其中有 2 个索引 menu_items 和 purchase_orders。两个索引都包含要搜索的不同列。索引 menu_items 包含“label”字段,索引 purchase_orders 包含“id”和“supplier_reference”字段。
$params = [ 'index' => 'menu_items,purchase_orders', '_source' => 'label,id,supplier_reference', 'body' => [ 'query' => [ 'bool' => [ 'must' => [ 'multi_match' => [ 'query' => $keyword, 'type' => 'bool_prefix', 'fields' => ['label', 'id', 'supplier_reference'], ], ], ], ], ], ];
现在,如果我正在搜索两个索引中都可用的任何术语“3312”,因此该查询运行良好,而另一个术语“供应商”当时在另一个索引中不可用,我得到了一个错误。 有人可以在这里帮忙吗?我怎样才能做到这一点?我们如何在两个或多个不同的索引中找到字段?
【问题讨论】:
-
这感觉像是Multi Search API 的工作。
-
是的,在发布之前,我浏览了您提供的链接。但我不知道我在上面的代码中犯了哪个错误。 - @nitrin0
-
错误信息是什么?
-
得到类似下面的消息:BadRequest400Exception {"error":{"root_cause":[{"type":"query_shard_exception","reason":"failed to create query: For input string: \ "Sup\"","index":"menu_items","index_uuid":"cE5R0uuFQa-JsZ8tkMN4uA"},{"type":"query_shard_exception","reason":"创建查询失败:对于输入字符串:\" Sup\"","index":"purchase_orders","index_uuid":"L2KxaN29QT2KbWsT0cNxiA"}],"type":"search_phase_execution_exception","reason":"所有分片失败","phase":"query","分组":true,"failed_shards"
标签: php laravel elasticsearch