深入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源码之环境搭建的主要内容,如果未能解决你的问题,请参考以下文章

IDEA中debug Elasticsearch源码之环境搭建

教你编译调试Elasticsearch 6.3.2源码

深入elasticsearch源码之索引过程

Spring Ioc源码深入剖析预备知识

elasticsearch 源码本地环境搭建

渣渣菜鸡的 ElasticSearch 源码解析 —— 环境搭建