ElasticSearch客户端提供了多种方式的数据创建方式,包括json串,map,内置工具;我们正式开始一般用json格式,借助json工具框架,比如gson ,json-lib,fastjson等等;
我们给下实例:
package com.java1234.es; import java.net.InetAddress; import java.util.Date; import java.util.HashMap; import java.util.Map; import org.elasticsearch.action.index.IndexResponse; 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; /** * ElasticSearch客户端连接服务器测试 * @author Administrator * */ public class EsTest { private static String host="192.168.1.108"; // 服务器地址 private static int port=9300; // 端口 private TransportClient client=null; /** * 获取连接 * @return */ @SuppressWarnings({ "unchecked", "resource" }) @Before public void getCient()throws Exception{ client = new PreBuiltTransportClient(Settings.EMPTY) .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(EsTest.host), EsTest.port)); } /** * 关闭连接 * @param client */ @After public void close(){ if(client!=null){ client.close(); } } /** * 添加索引 */ @Test public void testIndex()throws Exception{ IndexResponse response =client.prepareIndex("twitter", "tweet", "1") .setSource(XContentFactory.jsonBuilder() .startObject() .field("user", "kimchy") .field("postDate", new Date()) .field("message", "trying out Elasticsearch") .endObject() ) .get(); System.out.println("索引名称:"+response.getIndex()); System.out.println("类型:"+response.getType()); System.out.println("文档ID:"+response.getId()); // 第一次使用是1 System.out.println("当前实例状态:"+response.status()); } /** * 添加索引 */ @Test public void testIndex2()throws Exception{ String json = "{" + "\"user\":\"kimchy\"," + "\"postDate\":\"2013-01-30\"," + "\"message\":\"trying out Elasticsearch\"" + "}"; IndexResponse response =client.prepareIndex("weibo", "tweet") .setSource(json,XContentType.JSON) .get(); System.out.println("索引名称:"+response.getIndex()); System.out.println("类型:"+response.getType()); System.out.println("文档ID:"+response.getId()); // 第一次使用是1 System.out.println("当前实例状态:"+response.status()); } /** * 添加索引 */ @Test public void testIndex3()throws Exception{ Map<String, Object> json = new HashMap<String, Object>(); json.put("user","kimchy"); json.put("postDate",new Date()); json.put("message","trying out Elasticsearch"); IndexResponse response =client.prepareIndex("qq", "tweet") .setSource(json) .get(); System.out.println("索引名称:"+response.getIndex()); System.out.println("类型:"+response.getType()); System.out.println("文档ID:"+response.getId()); // 第一次使用是1 System.out.println("当前实例状态:"+response.status()); } /** * 添加索引 */ @Test public void testIndex4()throws Exception{ JsonObject jsonObject=new JsonObject(); jsonObject.addProperty("user", "kimchy"); jsonObject.addProperty("postDate", "1989-11-11"); jsonObject.addProperty("message", "trying out Elasticsearch"); IndexResponse response =client.prepareIndex("qq", "tweet") .setSource(jsonObject.toString(),XContentType.JSON) .get(); System.out.println("索引名称:"+response.getIndex()); System.out.println("类型:"+response.getType()); System.out.println("文档ID:"+response.getId()); // 第一次使用是1 System.out.println("当前实例状态:"+response.status()); } }