package com.gxy.ESChap01; import java.net.InetAddress;
import java.util.HashMap;
import java.util.Map; import org.elasticsearch.action.delete.DeleteResponse;
import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.action.update.UpdateRequest;
import org.elasticsearch.action.update.UpdateResponse;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
import org.elasticsearch.common.xcontent.XContentFactory;
import org.elasticsearch.common.xcontent.XContentType;
import org.elasticsearch.transport.client.PreBuiltTransportClient;
import org.junit.After;
import org.junit.Before;
import org.junit.Test; import com.google.gson.JsonObject; public class ESIndex { private static String host="192.168.56.3"; // 服务器地址
private static int port=9300; // 端口 private TransportClient client=null; //获取客户端
@SuppressWarnings({ "resource", "unchecked" })
@Before
public void getClient() throws Exception {
try {
client = new PreBuiltTransportClient(Settings.EMPTY)
.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(host),port));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} //关闭客户端
@After
public void close() {
if(client!=null) {
client.close();
}
}
/***
* 创建索引,添加文档
* @throws Exception
*/
@Test
public void testIndex() throws Exception {
IndexResponse response=client.prepareIndex("book","java","1")
.setSource(XContentFactory.jsonBuilder()
.startObject()
.field("name","MySQL从入门到删库跑路")
.field("publishDate","2012-11-11")
.field("price",100)
.endObject()).get();
System.out.println("索引名称:"+response.getIndex());
System.out.println("类型:"+response.getType());
System.out.println("文档ID:"+response.getId());
System.out.println("当前实例状态:"+response.status()); }
/**
* 添加文档,创建索引
*/
@Test
public void TestIndex2() {
JsonObject jsonObiect=new JsonObject();
jsonObiect.addProperty("name", "java从入门到放弃");
jsonObiect.addProperty("publishDate", "2018-05-06");
jsonObiect.addProperty("price", 62);
System.out.println(jsonObiect);
IndexResponse response=client.prepareIndex("book", "java", "2")
.setSource(jsonObiect.toString(), XContentType.JSON).get();
System.out.println("索引名称:"+response.getIndex());
System.out.println("类型:"+response.getType());
System.out.println("文档ID:"+response.getId());
System.out.println("当前实例状态:"+response.status()); } /**
* 根据ID获取文档
*/
@Test
public void testGetById() {
GetResponse response=client.prepareGet("book","java","1").get();
System.out.println(response.getSourceAsString());
}
/***
* 根据ID修改文档
* @throws Exception
* @throws InterruptedException
*/
@Test
public void testUpdate() throws InterruptedException, Exception {
UpdateRequest request=new UpdateRequest("book","java","1");
Map<String,Object> source = new HashMap<String, Object>();
source.put("name", "python网络爬虫");
source.put("publishDate", "2012-11-12");
source.put("price", 102);
request.doc(source);
UpdateResponse response=client.update(request).get();
System.out.println("索引名称:"+response.getIndex());
System.out.println("类型:"+response.getType());
System.out.println("文档ID:"+response.getId());
System.out.println("当前实例状态:"+response.status());
}
/**
* 根据ID删除文档
*/
@Test
public void testDelete() {
DeleteResponse response=client.prepareDelete("book","java","1").get();
System.out.println("索引名称:"+response.getIndex());
System.out.println("类型:"+response.getType());
System.out.println("文档ID:"+response.getId());
System.out.println("当前实例状态:"+response.status());
}
}
注意:ElasticSearch中通过HTTP请求的端口为9200,通过Java API 请求的端口为9300!!!