3、Elasticsearch删除和更新Index

阅读文本大概需要5分钟。

1、        使用Delete Index API删除Document

 

public static DeleteResponse getDeleteResponse(TransportClient client,
                                              String index,
                                              String type,
                                               Stringid) {
    DeleteResponse response =client.prepareDelete(index, type, id).get();
    return response;
}

 

测试

//先删除
 DeleteResponse deleteResponse = IndexDelete.getDeleteResponse(client,"twitter2", "tweet2", "2");

 System.out.println(deleteResponse.getIndex());

//在查找

 GetResponse getResponse = IndexGet.getGetResponse(client,"twitter2", "tweet2", "2");

 String str = getResponse.getSourceAsString();

 System.out.println(str);

2、        根据条件删除

 

public static BulkByScrollResponse getBulkByScrollResponse(TransportClient client,

                                               String index,

                                               String fieldName,

                                               String fieldVal) {

    BulkByScrollResponse response =

            DeleteByQueryAction.INSTANCE.newRequestBuilder(client)

                    .filter(QueryBuilders.matchQuery(fieldName, fieldVal)) //查询条件

            .source(index) //index(索引名)

            .get(); //执行

    return response;

}

测试

//先删除

BulkByScrollResponse deleteResponse = IndexDelete.getBulkByScrollResponse(client,"fendo", "user", "kimchy");

System.out.println(deleteResponse.getDeleted());

更多参考

https://www.elastic.co/guide/en/elasticsearch/client/java-api/5.2/java-docs-delete-by-query.html

 

3、        使用Update Index  API更新Document

方式一:创建UpdateRequest ,通过client发送

 

public static UpdateResponse getUpdateResponse1(TransportClient client,

                                              String index,

                                              String type,

                                              String id) {

    UpdateRequest updateRequest = new UpdateRequest();

    updateRequest.index(index);

    updateRequest.type(type);

    updateRequest.id(id);

    UpdateResponse response = null;

    try {

        updateRequest.doc(XContentFactory.jsonBuilder()

                .startObject()

                .field("gender", "male")

                .endObject());

        response = client.update(updateRequest).get();

    }catch (Exception e){

        e.printStackTrace();

    }

    return response;

}

方式二:使用prepareUpdate() 方法

public static UpdateResponse getUpdateResponse2(TransportClient client,

                                                String index,

                                                String type,

                                                String id) {

    UpdateResponse response = null;

    try {

        response =  client.prepareUpdate(index, type, id)

            .setDoc(XContentFactory.jsonBuilder() //合并到现有文档

                    .startObject()

                    .field("gender", "male")

                    .field("age", "100")

                    .endObject())

            .get();

}catch (Exception e){

    e.printStackTrace();

}

    return response;

}

测试:

UpdateResponse response1 =  IndexUpdate.getUpdateResponse1(client,  "twitter2", "tweet2", "2");

System.out.println(response1.getIndex());



response1 = IndexUpdate.getUpdateResponse1(client,"twitter2", "tweet2", "2");

System.out.println(response1.getIndex());

往期精彩

01 漫谈发版哪些事,好课程推荐

02 Linux的常用最危险的命令

03 精讲Spring Boot—入门+进阶+实例

04 优秀的Java程序员必须了解的GC哪些

05 互联网支付系统整体架构详解

关注我

每天进步一点点

很干!在看吗?☟

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BUG弄潮儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值