ElasticSearch前言
本节介绍elasticsearch提供的Java API,所有elasticsearch操作都使用Client对象执行。所有操作在本质上是完全异步的。
另外,客户端上的操作可以被积累并且被批量执行。
注意,所有APIS通过JAVA API的方式公开(实际上,JAVA API 在内部执行它们)。
MAVEN 仓库
Elasticsearch的JAVA Client的Jar包托管在Maven Central上。
例如,您可以在pom.xml文件中依赖最新版本的JAR:
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>transport</artifactId>
<version>5.1.1</version>
</dependency>
你还需要添加Log4j的依赖:
<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>
并且你需要提供一个Log4j的配置文件,例如, 你可以在你的 src/main/resources 文件夹下添加一个 log4j2.properties 文件 ,像这样
appender.console.type = Console
appender.console.name = console
appender.console.layout.type = PatternLayout
rootLogger.level = info
rootLogger.appenderRef.console.ref = console
如果你不想用Log4j 2的话, 你还个一使用SLF4J替代它。
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-to-slf4j</artifactId>
<version>2.7</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.21</version>
</dependency>
这个网页(http://www.slf4j.org/manual.html)列出了你可以使用的替代方案,你可以将你喜欢的日志工具添加到你的项目依赖中,例如,我们使用slf4j-simple logger:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.21</version>
</dependency>
处理JAR包的依赖冲突:
如果你要在你的Java程序中使用ElasticSearch,你可能必须处理与第三方JAR包的版本冲突的问题。例如, ElasticSearch使用Joda 2.8, 而你的代码中使用的是Joda 2.1.
如果出现这种情况的话, 你有两个选择:
1. 最简单的解决方案是更新。较新的的JAR包可能已经修复了一些老的Bug,你落后的越远,你的升级将变得越困难。当然,你如果使用第三方的JAR包,而后者依赖与一个更老的JAR包,这将会阻止你的升级。
2.第二个方案是重定位麻烦的依赖关系,使你的应用程序或ElasticSearch和ElasticSearch客户端所需要的任何JAR分离开。“To shade or not to shade”(https://www.elastic.co/blog/to-shade-or-not-to-shade)博客文章描述了这样做的所有步骤。