初学ES,总是遇到一些小问题。今天遇到的问题是,在java中pom.xml导入了

<dependency>
  <groupId>org.elasticsearch</groupId>
  <artifactId>elasticsearch</artifactId>
  <version>2.3.3</version>
</dependency>

的jar包
在创建client连接时参考api写的代码如下:

Client client = TransportClient.builder().build()
					.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"), 9300));

运行时一直卡住,不报错也连接不成功。
经过排查,是因为我电脑上安装的Elasticsearch是1.7版本的。2.3版本和1.7版本里面的API不太一样,高版本的客户端不能调用低版本的服务端。后来我把pom.xml的引用改为:

<dependency>
	 <groupId>org.elasticsearch</groupId>
	 <artifactId>elasticsearch</artifactId>
	 <version>1.7.1</version>
</dependency>

就可以运行了。
下面是1.7版本的代码:

/**
 * 
 */
package com.xingguo.steel.test.es;

import java.io.IOException;
import java.net.InetAddress;
import java.util.ArrayList;
import java.util.List;

import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.client.Client;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
import org.elasticsearch.common.xcontent.XContentBuilder;
import org.elasticsearch.common.xcontent.XContentFactory;
/**
 * @author diaoxingguo
 *
 */
public class Test {
	
	public static void main(String[] args) {
		
		//创建客户端
		try {
			Client client = new TransportClient().addTransportAddress(new InetSocketTransportAddress("127.0.0.1", 9300));
			
			System.out.println("连接成功");
			List<String> list = getData();
			for(String str : list){
				IndexResponse response = client.prepareIndex("blog","article").setSource(str).get();
				if(response.isCreated()){
					System.out.println("创建成功!");
				}
			}
			
			client.close();
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		
		
		
	}
	
	
	public static List<String> getData(){
		List<String> list = new ArrayList<String>();
		
		String blog1 = model2Json(new Blog(1,"第1个title","2016-10-14 10:31","第1个content"));
		String blog2 = model2Json(new Blog(2,"第2个title","2016-10-14 10:32","第2一个content"));
		String blog3 = model2Json(new Blog(3,"第3个title","2016-10-14 10:33","第3个content"));
		String blog4 = model2Json(new Blog(4,"第4个title","2016-10-14 10:34","第4个content"));
		String blog5 = model2Json(new Blog(5,"第5个title","2016-10-14 10:35","第5个content"));
		String blog6 = model2Json(new Blog(6,"第6个title","2016-10-14 10:36","6个content"));
		String blog7 = model2Json(new Blog(7,"第7个title","2016-10-14 10:37","第7个content"));
		String blog8 = model2Json(new Blog(8,"第8个title","2016-10-14 10:36","8个content"));
		
		list.add(blog1);
		list.add(blog2);
		list.add(blog3);
		list.add(blog4);
		list.add(blog5);
		list.add(blog6);
		list.add(blog7);
		list.add(blog8);
		
		return list;
	}
	
	 public static String model2Json(Blog blog) {
	        String jsonData = null;
	        try {
	            XContentBuilder jsonBuild = XContentFactory.jsonBuilder();
	            jsonBuild.startObject()
	            			.field("id", blog.getId())
	            			.field("title", blog.getTitle())
	            			.field("posttime", blog.getPostTime())
	            			.field("content",blog.getContent())
	                    .endObject();

	            jsonData = jsonBuild.string();
	            System.out.println(jsonData);

	        } catch (IOException e) {
	            e.printStackTrace();
	        }

	        return jsonData;
	    }
}

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐