Elasticsearch+java 实例
楼主刚刚踏入职场,主攻ES,为此写了这个文章主要教初学者一些知识,希望对你有用。
如何在idea上构建一个ES项目
- 首先构建一个Maven项目,编辑pox.xml如下:
<dependencies>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>transport</artifactId>
<version>5.4.3</version>
</dependency>
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>5.4.3</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.8.2</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.8.2</version>
</dependency>
</dependencies>
此时,如果你的网络不好,下载的依赖包可能不完整,导致报错无法找到此依赖,这时候你需要删除一些maven的临时文件,给大家分享一个脚本,放置于你的maven库路径下~/.m2下
# create by NettQun
REPOSITORY_PATH=/home/andyshen/.m2/repository
echo 正在搜索...
find $REPOSITORY_PATH -name "*lastUpdated*" | xargs rm -fr
echo 搜索完
ES的主要有两种java client
ES中主要包含了两种clent:transport client、 java rest client
TransportClient客户端
- TransportClient 是ElasticSearch(java)客户端封装对象,使用transport远程连接到Elasticsearch集群,该transport node并不会加入集群,而是简单的向ElasticSearch集群上的节点发送请求。
- 基于netty协议,端口9300,适合海量查询,性能好较为麻烦
Netty是由JBOSS提供的一个java开源框架。Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。
依赖
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>transport</artifactId>
<version>6.4.1</version>
</dependency>
代码实例
// on startup
TransportClient client = new PreBuiltTransportClient(Settings.EMPTY) // @1
.addTransportAddress(new TransportAddress(InetAddress.getByName("localhost"), 9300)) // @2
.addTransportAddress(new TransportAddress(InetAddress.getByName("localhost"), 9300));
// on shutdown
client.close();
Java REST客户端
- Java Low Level REST Client:elasticsearch client低级别客户端。它允许通过http请求与Elasticsearch集群进行通信。API本身不负责数据的编码解码,由用户去编码解码。它与所有的ElasticSearch版本兼容。
- Java High Level REST Client:Elasticsearch client官方高级客户端。基于低级客户端,它定义的API,已经对请求与响应数据包进行编码解码。
- JAVA REST Client使用http协议 端口9200 上手简单,懂ES DSL查询即可
依赖
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-client</artifactId>
<version>6.4.0</version>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>6.4.0</version>
<type>pom</type>
</dependency>
实例代码
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(
new HttpHost("localhost", 9200, "http"),
new HttpHost("localhost", 9201, "http")));
// close
client.close();
一些ES实例
目前主要包含13个实例,具体请转到github:https://github.com/AndyShen105/Elasticsearch-java-samples
Samples of Document API
- test-1: del an index
- test-2: create an index
- test-3: upload a file into index
- test-4: upload a data
- test-5: obtain a doc
- test-6: del a doc
- test-7: upload a file with bulkprocesser into index
Samples of search API
- test-8: a sample search
- test-9: search with scroll
- test-10: search with template
Samples of aggregation API
- test-11: simple aggregation
- test-12: aggregation stats
- test-13: geo bounds aggregations
…
可以的话麻烦点个赞,谢谢哦