ElasticSearch(三):Java操做ElasticSearch索引之CRUD

 1 package com.gxy.ESChap01;  2 
 3 import java.net.InetAddress;  4 import java.util.HashMap;  5 import java.util.Map;  6 
 7 import org.elasticsearch.action.delete.DeleteResponse;  8 import org.elasticsearch.action.get.GetResponse;  9 import org.elasticsearch.action.index.IndexResponse;  10 import org.elasticsearch.action.update.UpdateRequest;  11 import org.elasticsearch.action.update.UpdateResponse;  12 import org.elasticsearch.client.transport.TransportClient;  13 import org.elasticsearch.common.settings.Settings;  14 import org.elasticsearch.common.transport.InetSocketTransportAddress;  15 import org.elasticsearch.common.xcontent.XContentFactory;  16 import org.elasticsearch.common.xcontent.XContentType;  17 import org.elasticsearch.transport.client.PreBuiltTransportClient;  18 import org.junit.After;  19 import org.junit.Before;  20 import org.junit.Test;  21 
 22 import com.google.gson.JsonObject;  23 
 24 
 25 public class ESIndex {  26     
 27     private static String host="192.168.56.3"; // 服務器地址
 28     private static int port=9300; // 端口
 29     
 30     private TransportClient client=null;  31     
 32     
 33     //獲取客戶端
 34     @SuppressWarnings({ "resource", "unchecked" })  35  @Before  36     public void getClient() throws Exception {  37         try {  38             client = new PreBuiltTransportClient(Settings.EMPTY)  39                     .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(host),port));  40         } catch (Exception e) {  41             // TODO Auto-generated catch block
 42  e.printStackTrace();  43  }  44  }  45     
 46     //關閉客戶端
 47  @After  48     public void close() {  49         if(client!=null) {  50  client.close();  51  }  52  }  53     /***  54  * 建立索引,添加文檔  55  * @throws Exception  56      */
 57  @Test  58     public void testIndex() throws Exception {  59         IndexResponse response=client.prepareIndex("book","java","1")  60  .setSource(XContentFactory.jsonBuilder()  61  .startObject()  62                         .field("name","MySQL從入門到刪庫跑路")  63                         .field("publishDate","2012-11-11")  64                         .field("price",100)  65  .endObject()).get();  66         System.out.println("索引名稱:"+response.getIndex());  67         System.out.println("類型:"+response.getType());  68         System.out.println("文檔ID:"+response.getId());  69         System.out.println("當前實例狀態:"+response.status());  70         
 71  }  72     /**
 73  * 添加文檔,建立索引  74      */
 75  @Test  76     public void TestIndex2() {  77         JsonObject jsonObiect=new JsonObject();  78         jsonObiect.addProperty("name", "java從入門到放棄");  79         jsonObiect.addProperty("publishDate", "2018-05-06");  80         jsonObiect.addProperty("price", 62);  81  System.out.println(jsonObiect);  82         IndexResponse response=client.prepareIndex("book", "java", "2")  83  .setSource(jsonObiect.toString(), XContentType.JSON).get();  84         System.out.println("索引名稱:"+response.getIndex());  85         System.out.println("類型:"+response.getType());  86         System.out.println("文檔ID:"+response.getId());  87         System.out.println("當前實例狀態:"+response.status());  88         
 89  }  90     
 91     /**
 92  * 根據ID獲取文檔  93      */
 94  @Test  95     public void testGetById() {  96         GetResponse response=client.prepareGet("book","java","1").get();  97  System.out.println(response.getSourceAsString());  98  }  99     /*** 100  * 根據ID修改文檔 101  * @throws Exception 102  * @throws InterruptedException 103      */
104  @Test 105     public void testUpdate() throws InterruptedException, Exception { 106         UpdateRequest request=new UpdateRequest("book","java","1"); 107         Map<String,Object> source = new HashMap<String, Object>(); 108         source.put("name", "python網絡爬蟲"); 109         source.put("publishDate", "2012-11-12"); 110         source.put("price", 102); 111  request.doc(source); 112         UpdateResponse response=client.update(request).get(); 113         System.out.println("索引名稱:"+response.getIndex()); 114         System.out.println("類型:"+response.getType()); 115         System.out.println("文檔ID:"+response.getId()); 116         System.out.println("當前實例狀態:"+response.status()); 117  } 118     /**
119  * 根據ID刪除文檔 120      */
121  @Test 122     public void testDelete() { 123         DeleteResponse response=client.prepareDelete("book","java","1").get(); 124         System.out.println("索引名稱:"+response.getIndex()); 125         System.out.println("類型:"+response.getType()); 126         System.out.println("文檔ID:"+response.getId()); 127         System.out.println("當前實例狀態:"+response.status()); 128  } 129 }

注意:ElasticSearch中經過HTTP請求的端口爲9200,經過Java API 請求的端口爲9300!!!java

相關文章
相關標籤/搜索