You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

elastic4s中如何从RequestSuccess[DeleteByQueryResponse]提取信息

解决方案

你提到的result类型为Left[DeleteByQueryResponse]应该是观测笔误,从你给出的RequestSuccess泛型定义来看,匹配到的success实例的result字段本身就是DeleteByQueryResponse类型,可以直接访问提取信息。

方法1:直接访问result字段提取信息

你在RequestSuccess匹配分支内,直接调用success.result即可拿到完整的DeleteByQueryResponse对象,常用可提取的核心字段包括:

  • 匹配到的符合条件的文档总数:total
  • 实际成功删除的文档数:deleted
  • 执行是否超时:timedOut
  • 分片执行结果统计:shards
  • 执行过程中产生的异常失败列表:failures

方法2:通过map方法转换结果

如果你需要对返回结果做统一转换封装,可以调用RequestSuccess提供的map方法,传入自定义转换函数即可得到新的Response实例。

完整修改后的代码示例

def delete(id: String) = {
    client.execute {
      deleteByQuery("myIndex", termQuery("id", id))
    }.await
  }

delete(id) match {
  case failure: RequestFailure => 
    complete(StatusCodes.InternalServerError, failure.body.getOrElse("Unknown reason"))
  case success: RequestSuccess[DeleteByQueryResponse] => 
    // 直接提取result字段
    val delResult = success.result
    // 组装自定义返回信息
    val resultInfo = s"删除操作完成:共匹配到${delResult.total}条文档,成功删除${delResult.deleted}条,是否超时:${delResult.timedOut}"
    complete(resultInfo)

  // map方法使用示例
  // val infoResponse = success.map(res => s"共删除${res.deleted}条记录")
  // complete(infoResponse.result)
}

内容的提问来源于stack exchange,提问作者Mandroid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 23:54:02