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))
只使用安装包下的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
四.创建Client并搜索数据
首先启动elasticsearch,我这里使用的是5.1.1,创建一个新的索引:
curl -XPUT "http://localhost:9200/blog"
添加一条文档
curl -XPUT "http://localhost:9200/blog/article/1" -d '{ "title":"test", "content":"test content" }'
在 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"}
工程目录以及运行结果的截图如下:
五.参考资料
参考资料主要为官网文档:
Maven Repository
Log4j 2 Logger
六、代码下载
2017年4月18日更新。
代码下载地址:
http://download.csdn.net/detail/napoay/9817575
完整jar包在es5/target/dependency目录下。