1. 程式人生 > >ES(二)索引的查詢更新刪除

ES(二)索引的查詢更新刪除

//單個索引查詢
@Test
public void queryIndex(){
    //查詢
    GetResponse response = client.prepareGet("blog", "article", "2").get();

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

    client.close();
}

結果:

[email protected]989

{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