MultiSearchRequest返回的响应是否与添加SearchRequest的顺序一致?
关于MultiSearchResponse响应顺序的解答
结论
MultiSearchResponse的返回结果与你添加SearchRequest的顺序完全一一对应,不存在乱序情况,你当前的默认处理逻辑是正确的。
具体说明
- Elasticsearch的
_msearch接口设计就是如此:所有子查询会并行执行提升查询效率,但服务端会等待全部子查询执行完成后,严格按照请求传入的顺序组装响应结果返回,不会因为某个子查询执行速度更快就打乱顺序。 - 你不需要额外做结果匹配、排序的逻辑,直接按索引遍历
MultiSearchResponse里的MultiSearchResponse.Item数组即可,第n个响应结果完全对应你第n次调用request.add()添加的搜索请求。
补充注意点
如果某一个子查询执行报错,对应的MultiSearchResponse.Item会携带failure信息,不会影响其他查询结果的顺序,你可以单独判断每个item的失败状态做异常处理即可。
内容的提问来源于stack exchange,提问作者usman
相关产品推荐
相关产品推荐

