java1234开源博客系统
博客信息

Java操作ElasticSearch之创建索引

发布时间:『 2017-09-11 17:08』  博客类别:elasticsearch  阅读(10769) 评论(0)

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());
	}
	
}


关键字:   ElasticSearch     创建索引  
关注Java1234微信公众号
博主信息
Java1234_小锋
(知识改变命运,技术改变世界)
Powered by Java1234 V3.0 Copyright © 2012-2016 Java知识分享网 版权所有