1. 程式人生 > >ElasticSearch(三):Java操作ElasticSearch索引之CRUD

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

transport delete end std testin python網絡 search ava socket

  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!!!

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