深入elasticsearch源码之环境搭建
Posted 洽洽老大
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深入elasticsearch源码之环境搭建相关的知识,希望对你有一定的参考价值。
为了研究elasticsearch的源码,可以从github下载源码,到本地编译,但这种方法比较麻烦。
我是采用eclipse构建maven项目,在pom文件中引用elasticsearch的jar包的方式来搭建源码阅读的环境。
搭建
因为我搭建的es集群是2.2.1版本(关于如何搭建集群,可以参考ElasticSearch 分布式安装及调优 ,所以选用的elasticsearch也是2.2.1版本,maven依赖如下:
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>2.2.1</version>
</dependency>
如果集群版本不一样,也可以到maven仓库选择其他版本。
创建客户端
为了跟集群通信,首先需要创建客户端,在这里,我使用了TransportCllient,参照官方文档,我对其进行了封装,方便后续使用,具体代码如下:
package es;
import java.net.InetAddress;
import java.net.UnknownHostException;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
public class MyTransportClient
private TransportClient transportClient;
private static MyTransportClient clientInstance;
private MyTransportClient()
/**
* 设置
*/
Settings settings = Settings.settingsBuilder()
.put("cluster.name","qiaqia")//我的集群名
.put("client.transport.sniff",true)
.build();
try
transportClient = TransportClient.builder().settings(settings).build()
.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("192.168.0.4"), 9300));
catch (UnknownHostException e)
e.printStackTrace();
/*
* 单例
*/
public static MyTransportClient getInstance()
if(clientInstance==null)
clientInstance = new MyTransportClient();
return clientInstance;
public TransportClient getTransportClient()
return transportClient;
在集群中索引一条数据
命令行执行:
curl -XPUT 'http://192.168.0.4:9200/library/book/1?pretty' -d '
"title":"mastering elasticsearch"'
得到
"_index" : "library",
"_type" : "book",
"_id" : "1",
"_version" : 1,
"_shards" :
"total" : 2,
"successful" : 2,
"failed" : 0
,
"created" : true
通过客户端获取es中的索引数据
package es;
import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.client.transport.TransportClient;
public class MyClientTest
public static void main(String[] args)
TransportClient client = MyTransportClient.getInstance().getTransportClient();
//get document
GetResponse response = client.prepareGet("library","book","1").get();
System.out.println(response.getSourceAsString());
测试
执行MyClientTest,console输出以下信息:
四月 13, 2016 1:46:29 下午 org.elasticsearch.plugins.PluginsService <init>
信息: [Termagaira] modules [], plugins [], sites []
"title":"mastering elasticsearch"
表明客户端连接成功并且能正确获取es集群的数据。
在eclipse 的 maven Dependences
里面,可以查看相关的类的源码。
以上是关于深入elasticsearch源码之环境搭建的主要内容,如果未能解决你的问题,请参考以下文章