ES(二)索引的查詢更新刪除
阿新 • • 發佈:2018-12-17
//單個索引查詢
@Test
public void queryIndex(){
//查詢
GetResponse response = client.prepareGet("blog", "article", "2").get();
// 列印
System.out.println(response.getSource());
client.close();
}
結果:
{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
第二次執行
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