delete 接口_delete接口-程序员宅基地

技术标签: # Java REST 客户端文档  java  elasticsearch  


官方文档地址: Delete API


DeleteRequest

DeleteRequest有两个必需参数:

DeleteRequest deleteRequest = new DeleteRequest(
        "posts", //索引
        "1");//文档ID

可选参数

可以提供以下参数:

//路由值
deleteRequest.routing("routing");
使用TimeValue作为等待主分片可用的超时时间
deleteRequest.timeout(TimeValue.timeValueMinutes(2)); 
//使用String作为等待主分片可用的超时时间
deleteRequest.timeout("2m");
//WriteRequest.RefreshPolicy作为刷新策略
deleteRequest.setRefreshPolicy(WriteRequest.RefreshPolicy.WAIT_UNTIL); 
//使用String作为刷新策略
deleteRequest.setRefreshPolicy("wait_for"); 
//版本
deleteRequest.version(2);
//版本类型
deleteRequest.versionType(VersionType.EXTERNAL);

同步执行

当以以下方式执行DeleteRequest时,客户端会等待DeleteRequest返回,然后才会继续执行代码:

DeleteResponse deleteResponse = client.delete(
        deleteRequest, RequestOptions.DEFAULT);

同步调用可能会在无法解析高级 REST 客户端中的 REST 响应、请求超时或没有从服务器返回响应等类似情况下会抛出IOException

在服务器返回4xx5xx错误代码的情况下,高级客户端尝试解析响应体错误细节,然后抛出一个通用的ElasticsearchException,并将原始的ResponseException作为被抑制的异常添加到其中。

异步执行

还可以以异步方式执行DeleteRequest,以便客户端可以直接返回。用户需要通过将请求和侦听器传递给异步 delete 方法来指定如何处理响应或潜在的失败:

//要执行的IndexRequest和执行完成时要使用的ActionListener
client.deleteAsync(deleteRequest, RequestOptions.DEFAULT, listener);

异步方法不会阻塞并会立即返回。如果执行成功,则使用onResponse方法回调ActionListener;如果执行失败,则使用onFailure方法回调ActionListener。失败场景和预期异常与同步执行情况相同。

delete的标准侦听器如下所示:

listener = new ActionListener<DeleteResponse>() {
    
    @Override
    public void onResponse(DeleteResponse deleteResponse) {
    
         //当执行成功完成时调用。
    }

    @Override
    public void onFailure(Exception e) {
    
        //当整个DeleteRequest失败时调用。
    }
};

DeleteResponse

返回的DeleteResponse允许检索关于执行操作的信息,如下所示:

String index = deleteResponse.getIndex();
String id = deleteResponse.getId();
long version = deleteResponse.getVersion();
ReplicationResponse.ShardInfo shardInfo = deleteResponse.getShardInfo();
if (shardInfo.getTotal() != shardInfo.getSuccessful()) {
    
    //处理成功分片的数量小于总分片的情况
}
if (shardInfo.getFailed() > 0) {
    
    for (ReplicationResponse.ShardInfo.Failure failure : shardInfo.getFailures()) {
    
        //处理可能的失败
        String reason = failure.reason(); 
    }
}

也可以检查是否找到该文件:

DeleteRequest deleteRequest = new DeleteRequest("posts", "does_not_exist");
DeleteResponse deleteResponse = client.delete(deleteRequest, RequestOptions.DEFAULT);
if (deleteResponse.getResult() == DocWriteResponse.Result.NOT_FOUND) {
    
    //如果找不到要删除的文档,在这里进行处理
}

如果有版本冲突,将抛出一个ElasticsearchException

try {
    
    DeleteResponse deleteResponse = client.delete(
        new DeleteRequest("posts", "1").setIfSeqNo(100).setIfPrimaryTerm(2),
            RequestOptions.DEFAULT);
} catch (ElasticsearchException exception) {
    
    if (exception.status() == RestStatus.CONFLICT) {
    
        //所引发的异常表明返回了版本冲突错误
    }
}
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/wb1046329430/article/details/120168974

智能推荐

ROS运行错误:无法连接到ROS master,ERROR: unable to contact ROS master at [http://192.168.0.20:11311]_rotmaster报错是个无效的robotmaster-程序员宅基地

文章浏览阅读3.9k次。https://blog.csdn.net/xiaodingqq/article/details/87690563遇到的错误:_rotmaster报错是个无效的robotmaster

正交矩阵-程序员宅基地

文章浏览阅读2.4k次,点赞2次,收藏9次。正交矩阵是实数特殊化的酉矩阵,因此总是正规矩阵。尽管我们在这里只考虑实数矩阵,这个定义可用于其元素来自任何域的矩阵。正交矩阵毕竟是从内积自然引出的,对于复数的矩阵这导致了归一要求。定义  定义 1  如果:AA'=E(E为单位矩阵,A'表示“矩阵A的转置矩阵”。)或A′A=E,则n阶实矩阵 A称为正交矩阵, 若A为正交阵,则满足以下条件:  ..._正交矩阵

error:(-215: Assertion filed)p.checkVector(2,cv 32S)>=0 in function cv::fillPoly错误原因OpenCV Python_(-215:assertion failed) p.checkvector(2, cv_32s) >-程序员宅基地

文章浏览阅读4.2k次。如下图所示,左边无用白块太多,而且线基本到不了左边那一块,所以想弄个掩模把左边弄成纯黑色。下图是打算使用的掩模下图是原来的程序,结果报错,错误如标题所示。# 掩模创建def roi_mask(img,corner1_points,corner2_points): mask = np.zeros_like(img) cv.fillPoly(mask,corne..._(-215:assertion failed) p.checkvector(2, cv_32s) >= 0 in function 'cv::polyl

MLPerf最新AI芯片跑分:谷歌TPU和英伟达打破记录_tpu 芯片-程序员宅基地

文章浏览阅读1k次。智东西7月11日消息,昨日,MLPerf基准联盟公布了最新一轮的基准测试数据,结果显示,英伟达和谷歌云刷新了人工智能训练时间的记录。MLPerf是一项用于测试ML(Machine Learning)硬件、软件以及服务的训练和推理性能的公开基准。它能帮助人工智能研究人员采用通用标准来衡量用于训练人工智能的硬件、软件的最佳性能和速度。目前,MLPerf基准测试正迅速成为测量机器学习性能的行业标..._tpu 芯片

JSP 技术练习题_jsp隐式对象out可以通过response.getwriter()方式获取,然后再通过printl-程序员宅基地

文章浏览阅读7.8k次,点赞9次,收藏66次。JSP隐式对象:(1) out 用于页面输出 (2) request 得到用户请求信息 (3) response 服务器向客户端回应信息 (4) config 服务器配置,可以取得初始化参数 (5) session 用来保存用户的信息 (6) application 所有用户的共享信息 (7) page 指当前页面转换后的Servlet类的实例 (8) pageContext JSP的页面容器 (9) exception 表示JSP页面所发生的异常,在错误页中才起作用。......_jsp隐式对象out可以通过response.getwriter()方式获取,然后再通过println()或者wr

window10下载地址-程序员宅基地

文章浏览阅读603次。window10下载地址_window10下载

随便推点

MySql中重新设置AUTO_INCREMENT自增值方法_set auto_increment-程序员宅基地

文章浏览阅读3.4w次,点赞3次,收藏13次。查询表名为tableName的auto_increment值:SELECT AUTO_INCREMENT FROM information_schema.tables WHEREtable_name='tableName';修改表名为tableName的auto_increment值:ALTER TABLE tableName auto_increment=number ;_set auto_increment

Seata 环境搭建_apm-skywalking not enabled-程序员宅基地

文章浏览阅读3.3k次,点赞2次,收藏4次。seata安装版本是1.5.2,版本不同,安装流程也可能不同,这里的版本需要保持一致执行sql创建数据表使用脚本添加配置到nacos配置中心修改文件,分别修改store、config、registry相关配置。启动服务,成功登陆seata控制台。查看nacos控制台,服务列表新增seata服务。_apm-skywalking not enabled

python SMTP邮件发送-程序员宅基地

文章浏览阅读340次。本例使用的时python2.7环境,python3的操作应该也是差不多的。需要用到smtplib和email两个包。发送文本类型的邮件下面看个发送文本邮件的例子(使用网易163的SMTP):# -*- coding: UTF-8 -*-import smtplibfrom email.mime.text import MIMETextfrom email.header import..._smtp_obj.quit()

Mysql区分大小写(大小写敏感)配置_dbms: mysql (版本 8.0.32) 区分大小写: 普通形式=lower,分隔形式=low-程序员宅基地

文章浏览阅读6.4w次,点赞11次,收藏43次。Linux下mysql默认区分大小写Windows下mysql默认不区分大小写查看是否区分大小写show variables like 'lower%'lower_case_table_names参数详解: lower_case_table_names = 0 其中 0:区分大小写,1:不区分大小写 MySQL在Linux下数据库名、表名、列名、别名大小写规则是这样的:    1、数据库名与表名是..._dbms: mysql (版本 8.0.32) 区分大小写: 普通形式=lower,分隔形式=lower 驱动程序

(学习笔记)matplotlib.pyplot模块下基本画图函数的整理_plt模块-程序员宅基地

文章浏览阅读765次。matplotlib基本函数整理_plt模块

java网络编程Socket中SO_LINGER选项的用法解读_socket.setlinger-程序员宅基地

文章浏览阅读1.3k次。1:设置该选项: public void setSoLinger(boolean on, int seconds) throws SocketException; 读取该选项:public int getSoLinger() throws SocketException SO_LINGER选项用来控制Socket关闭时的行为,默认情况下,执行Socket的close_socket.setlinger

推荐文章

热门文章

相关标签