
文章插图
1. 简述
-
Elasticsearch是基于Lucene开发的一个分布式全文检索框架,向Elasticsearch中存储和从Elasticsearch中查询,格式是json 。
- 向
Elasticsearch中存储数据,其实就是向es中的index下面的type中存储json类型的数据 。
-
elasticsearch提供了很多语言的客户端用于操作elasticsearch服务,例如:JAVA、Python、.net、JavaScript、php等 。本文主要介绍如何使用java语言来操作elasticsearch服务 。在elasticsearch的官网上提供了两种java语言的API,一种是Java Transport Client,一种是Java REST Client。
Java Transport Client** 是基于 TCP 协议交互的,**在elasticsearch 7.0+版本后官方不再赞成使用,在Elasticsearch 8.0的版本中完全移除TransportClient
**Java REST Client是基于 HTTP 协议交互,**而Java REST Client又分为Java Low Level REST Client和Java High Level REST Client
Java High Level REST Client是在Java Low Level REST Client的基础上做了封装,使其以更加面向对象和操作更加便利的方式调用elasticsearch服务 。
官方推荐使用Java High Level REST Client,因为在实际使用中,Java Transport Client在大并发的情况下会出现连接不稳定的情况 。那接下来我们就来看看elasticsearch提供的Java High Level REST Client(以下简称高级REST客户端)的一些基础的操作,跟多的操作大家自行阅读elasticsearch的官方文档:[https://www.elastic.co/guide/en/elasticsearch/client/java-rest/current/java-rest-high.html](https://www.elastic.co/guide/en/elasticsearch/client/java-rest/current/java-rest-high.html)
2. 准备
- 环境:
windows 10elasticsearch 7.91IDEAMavenJava 8高级客户端需要
Java 1.8并依赖于Elasticsearch core项目
- 依赖:
<dependency><groupId>org.elasticsearch</groupId><artifactId>elasticsearch</artifactId><version>7.9.1</version></dependency><dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId><version>7.9.1</version></dependency> 3. 初始化
- 实例需要构建 REST 低级客户端生成器,如下所示:
RestHighLevelClient
RestHighLevelClient client = new RestHighLevelClient(RestClient.builder(new HttpHost("localhost", 9200, "http"),new HttpHost("localhost", 9201, "http")));- 高级客户端将在内部创建用于基于提供的生成器执行请求的低级客户端 。该低级客户端维护一个连接池并启动一些线程,因此,当您很好地完成高级客户端时,您应该关闭该高级客户端,然后关闭内部低级客户端以释放这些资源 。这可以通过 以下时间完成:
close
client.close();在有关 Java 高级客户端的本文档的其余部分中,实例将引用为。RestHighLevelClientclient
案例:
- 查询
index代码:
public static void main(String[] args){RestClientBuilder builder = RestClient.builder(new HttpHost("127.0.0.1",//es主机 IP9200// es 端口http));RestHighLevelClient client = new RestHighLevelClient(builder);GetRequest request = new GetRequest("blog1", //索引"1" //文档ID);//当针对不存在的索引执行获取请求时,响应404状态码,将引发IOException,需要按如下方式处理:GetResponse documentFields = null;try {documentFields = client.get(request, RequestOptions.DEFAULT);} catch (IOException e) {e.printStackTrace();////处理因为索引不存在而抛出的异常情况}System.out.println(documentFields);try {client.close();} catch (IOException e) {e.printStackTrace();}}
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 4月16日新闻早讯,每天60秒读懂世界
- 聊一聊Redis官方置顶推荐的Java客户端Redisson
- 一文讲透FTP和SFTP的区别
- 浅析JavaScript异步到底是怎么实现的?
- JavaScript之dayjs用法,替代moment.js
- 进程、线程、并行与并发
- 10个很棒的JavaScript库,提升Web开发效率
- Java中“::”是什么含义
- Java图形验证码支持gif、中文、算术等
- 一文搞懂分类算法中常用的评估指标
