Elasticsearch 5.0下Java API使用指南

来源:互联网 发布:网络小贷 编辑:程序博客网 时间:2024/06/06 07:09

Elasticsearch 5.0下Java API使用指南

一.2.X到5.X

Elasticsearch 2.x使用java api把elasticsearch安装包下的lib文件夹下的jar文件全部加入到工程类路径即可,换到5.x就不适用了.创建Clien的代码:

Settings settings = Settings.builder().put("cluster.name", "elasticsearch").build();TransportClient client = new PreBuiltTransportClient(settings)                    .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"), 9300));
  • 1
  • 2
  • 3
  • 4

只使用安装包下的jar文件会出现PreBuiltTransportClient cannot be resolved to a type的错误,原因是缺少jar包.下面记录一下如何在5.X中使用java api

二.创建maven工程

2.1Eclipse中新建maven工程

打开eclipse,file->other->maven project: 
这里写图片描述 
创建group id(相当于工程名)和artifact id(相当于包名): 
这里写图片描述

2.2在pom.xml中添加以下依赖

<dependencies>        <dependency>            <groupId>org.elasticsearch.client</groupId>            <artifactId>transport</artifactId>            <version>5.1.1</version>        </dependency>        <dependency>            <groupId>org.apache.logging.log4j</groupId>            <artifactId>log4j-api</artifactId>            <version>2.7</version>        </dependency>        <dependency>            <groupId>org.apache.logging.log4j</groupId>            <artifactId>log4j-core</artifactId>            <version>2.7</version>        </dependency>    </dependencies>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

添加依赖后maven会自动导包,如下图所示: 
这里写图片描述 
至此所有的jar包都导入完成了。 
所有的jar包列表如下,如果出现导包错误一定查看一下jar包是否下载完整:

HdrHistogram-2.1.6.jarcommons-codec-1.10.jarcommons-logging-1.1.3.jarcompiler-0.9.3.jarelasticsearch-5.1.1.jarhppc-0.7.1.jarhttpasyncclient-4.1.2.jarhttpclient-4.5.2.jarhttpcore-4.4.5.jarhttpcore-nio-4.4.5.jarjackson-core-2.8.1.jarjackson-dataformat-cbor-2.8.1.jarjackson-dataformat-smile-2.8.1.jarjackson-dataformat-yaml-2.8.1.jarjna-4.2.2.jarjoda-time-2.9.5.jarjopt-simple-5.0.2.jarlang-mustache-client-5.1.1.jarlog4j-api-2.7.jarlog4j-core-2.7.jarlucene-analyzers-common-6.3.0.jarlucene-backward-codecs-6.3.0.jarlucene-core-6.3.0.jarlucene-grouping-6.3.0.jarlucene-highlighter-6.3.0.jarlucene-join-6.3.0.jarlucene-memory-6.3.0.jarlucene-misc-6.3.0.jarlucene-queries-6.3.0.jarlucene-queryparser-6.3.0.jarlucene-sandbox-6.3.0.jarlucene-spatial-6.3.0.jarlucene-spatial-extras-6.3.0.jarlucene-spatial3d-6.3.0.jarlucene-suggest-6.3.0.jarnetty-3.10.6.Final.jarnetty-buffer-4.1.6.Final.jarnetty-codec-4.1.6.Final.jarnetty-codec-http-4.1.6.Final.jarnetty-common-4.1.6.Final.jarnetty-handler-4.1.6.Final.jarnetty-resolver-4.1.6.Final.jarnetty-transport-4.1.6.Final.jarpercolator-client-5.1.1.jarreindex-client-5.1.1.jarrest-5.1.1.jarsecuresm-1.1.jarsnakeyaml-1.15.jart-digest-3.0.jartransport-5.1.1.jartransport-netty3-client-5.1.1.jartransport-netty4-client-5.1.1.jar
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52

三.配置log4j2

在src/main/resources文件夹下新建文件log4j2.properties,加入以下log4 
j2的配置:

    appender.console.type = Console    appender.console.name = console    appender.console.layout.type = PatternLayout    rootLogger.level = info    rootLogger.appenderRef.console.ref = console
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

四.创建Client并搜索数据

首先启动elasticsearch,我这里使用的是5.1.1,创建一个新的索引:

 curl -XPUT "http://localhost:9200/blog"
  • 1

添加一条文档

 curl -XPUT "http://localhost:9200/blog/article/1" -d '{                "title":"test",    "content":"test content"    }'
  • 1
  • 2
  • 3
  • 4

在 src/main/java/目录下新建TestEsClient.java,内容如下:

    import java.net.InetAddress;    import org.elasticsearch.action.get.GetResponse;    import org.elasticsearch.client.transport.TransportClient;    import org.elasticsearch.common.settings.Settings;    import org.elasticsearch.common.transport.InetSocketTransportAddress;    import org.elasticsearch.transport.client.PreBuiltTransportClient;    public class TestEsClient {        public static void main(String[] args) {            try {                //设置集群名称                Settings settings = Settings.builder().put("cluster.name", "elasticsearch").build();                //创建client                TransportClient client = new PreBuiltTransportClient(settings)                        .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"), 9300));                //搜索数据                GetResponse response = client.prepareGet("blog", "article", "1").execute().actionGet();                //输出结果                System.out.println(response.getSourceAsString());                //关闭client                client.close();            } catch (Exception e) {                e.printStackTrace();            }        }    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32

运行结果:

    no modules loaded    loaded plugin [org.elasticsearch.index.reindex.ReindexPlugin]    loaded plugin [org.elasticsearch.percolator.PercolatorPlugin]    loaded plugin [org.elasticsearch.script.mustache.MustachePlugin]    loaded plugin [org.elasticsearch.transport.Netty3Plugin]    loaded plugin [org.elasticsearch.transport.Netty4Plugin]    { "title":"test","content":"test content"}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

工程目录以及运行结果的截图如下: 
这里写图片描述

五.参考资料

参考资料主要为官网文档:

Maven Repository 
Log4j 2 Logger

六、代码下载

2017年4月18日更新。 
代码下载地址: 
http://download.csdn.net/detail/napoay/9817575 
完整jar包在es5/target/dependency目录下。