ES(二)索引的查询更新删除

版权声明:有一种生活不去经历不知其中艰辛,有一种艰辛不去体会,不会知道其中快乐,有一种快乐,没有拥有不知其中纯粹 https://blog.csdn.net/wwwzydcom/article/details/85023190
//单个索引查询
@Test
public void queryIndex(){
    //查询
    GetResponse response = client.prepareGet("blog", "article", "2").get();

    // 打印
    System.out.println(response.getSource());

    client.close();
}

结果:

org.elasticsearch.transport.client.PreBuiltTransportClient@783ec989

{name=zyd, id=2, title=大数据}

需要注释掉之前获取客户端对象的client.close()方法

//多个条件的查询
@Test
public void queryMutilIndex(){

    //查询
    MultiGetResponse response = client.prepareMultiGet()
            .add("blog", "article", "3")
            .add("blog", "article", "2", "3")
            .add("blog", "article", "1").get();
    for (MultiGetItemResponse multiGetItemResponse : response) {
        GetResponse response1 = multiGetItemResponse.getResponse();

        if (response1.isExists()){
            System.out.println(response1.getSourceAsString());
        }
    }
 client.close();
}

更新文档(update)

@Test
public void updateData() throws Throwable {

     //1 创建更新数据的请求对象
    UpdateRequest updateRequest = new UpdateRequest();
    updateRequest.index("blog");
    updateRequest.type("article");
    updateRequest.id("3");
    //UpdateRequest updateRequest = new UpdateRequest("blog", "acticle", "3"); //会报错
    updateRequest.doc(XContentFactory.jsonBuilder().startObject()
            // 对没有的字段添加, 对已有的字段替换
            .field("title", "基于Lucene的搜索服务器")
            .field("content",
                    "它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。大数据前景无限")
            .field("createDate", "2017-8-22").endObject());

    // 2 获取更新后的值
    UpdateResponse indexResponse = client.update(updateRequest).get();

    // 3 打印返回的结果
    System.out.println("index:" + indexResponse.getIndex());
    System.out.println("type:" + indexResponse.getType());
    System.out.println("id:" + indexResponse.getId());
    System.out.println("version:" + indexResponse.getVersion());
    System.out.println("create:" + indexResponse.getResult());

    // 4 关闭连接
    client.close();
}

更新文档(upsert)

设置查询条件, 查找不到则添加IndexRequest内容,查找到则按照UpdateRequest更新

@Test
public void testUpsert() throws ExecutionException, InterruptedException, IOException {

    // 设置查询条件, 查找不到则添加
    IndexRequest indexRequest = new IndexRequest("blog", "article", "5")
            .source(XContentFactory.jsonBuilder().startObject().field("title", "搜索服务器").field("content","它提供了一个分布式多用户能力的全文搜索引擎," +
                    "基于RESTful web接口。Elasticsearch是用Java开发的" +
                    ",并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。" +
                    "设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。").endObject());
    //设置更新,查找到更新下面的设置
    UpdateRequest upsert = new UpdateRequest("blog", "article", "5").doc(XContentFactory.jsonBuilder().startObject().field("user", "zyd").endObject()).upsert(indexRequest);
    client.update(upsert).get();
    client.close();
}

第一次执行

hadoop102:9200/blog/article/5

img

第二次执行

hadoop102:9200/blog/article/5

在这里插入图片描述

删除文档数据**(prepareDelete** )

@Test
public void deleteDate(){
    //1 删除文档数据
    DeleteResponse indexResponse = client.prepareDelete("blog", "article", "5").get();

    // 2 打印返回的结果
    System.out.println("index:" + indexResponse.getIndex());
    System.out.println("type:" + indexResponse.getType());
    System.out.println("id:" + indexResponse.getId());
    System.out.println("version:" + indexResponse.getVersion());
    System.out.println("found:" + indexResponse.getResult());
    // 3 关闭连接
    client.close();
}

结果

index:blog
type:article
id:5
version:3
found:DELETED

猜你喜欢

转载自blog.csdn.net/wwwzydcom/article/details/85023190