Elasticsearch——Java API 概述

Elasticsearch Java API

Java 操作 Es 的方案有如下几种,根据Elasticsearch版本的不同要选择对应的客户端。

1、直接使用HTTP请求

Elasticsearch提供Rest API,所以可以直接直接使用 HTTP 请求,去操作 Es。HTTP 请求工具,可以使用 Java 自带的 HttpUrlConnection,也可以使用一些 HTTP 请求库,例如 HttpClient、OKHttp、Spring 中的 RestTemplate 都可以。这种方式有一个弊端,就是要自己组装请求参数,自己去解析响应的 JSON。

2、Low Level REST Client

Elasticsearch Client低级别客户端。它允许通过HTTP请求与Elasticsearch集群进行通信。API本身不负责数据的编码解码,由用户去编码解码。它与所有的Elasticsearch版本兼容。这种方式好处就是兼容所有的 Es 版本。但是就是数据处理比较麻烦。

3、Java High Level REST Client

Elasticsearch Client官方高级客户端。基于低级客户端,主要目标是为了暴露各API特定的方法。Java High Level REST Client依赖于Elasticsearch核心项目,将Request对象作为参数,返回一个Response对象。所有API都可以同步或异步调用。

  • 同步调用方法立即返回一个Response对象。
  • 而异步调用方法(方法名以async结尾)依赖于监听,当有请求返回或是错误返回时,该监听会通知到对应的方法继续执行。

注意:这种方式,所使用的依赖库的版本要和 Es 对应。

4、TransportClient

Transport Client随着Elasticsearch的第一个版本诞生,是一个特别的客户端。特别之处在于,它使用TCP协议与Elasticsearch通信,这也造成了当客户端与不同版本的Elasticsearch通信时,会存在兼容性问题。

Elasticsearch 7.0中已经弃用Transport Client,在8.0中完全移除它。

5、Java API Client

Elasticsearch在7.17版本之前使用的Java客户端是Java REST Client,从7.17版本开始Elastic官方将Java REST Client标记为弃用(deprecated),并推荐使用新版Java客户端Java API Client。

Java API Client是一个用于与Elasticsearch服务器进行通信的Java客户端库,帮助开发人员与Elasticsearch服务器进行通信,开发人员可以更加轻松地开发和维护代码。

Java API Client主要包含三个部分:

  • ElasticsearchClient类:Java API Client的核心类,提供与Elasticsearch服务器进行通信的方法。该类封装了底层的Transport通信,并提供了同步和异步调用、流式和函数式调用等方法。
  • JSON object mapper:处理数据序列化和反序列化的库。JSON object mapper与Jackson无缝集成,可以将Java对象映射到JSON格式。
  • 通用能力:提供了连接池、重试、JSON序列化等通用能力,提高了代码的可读性和可维护性,便于开发人员进行开发。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Elasticsearch是一个基于Lucene的分布式搜索引擎,提供了丰富的API以及插件机制来支持搜索、分析和数据存储等功能。Java API是其中一种与Elasticsearch进行交互的方式,它提供了对Elasticsearch集群中的索引、文档、搜索、聚合等操作的封装。 以下是Elasticsearch 8 Java API的一些主要功能和使用方法: 1. 连接到Elasticsearch集群:可以使用`RestHighLevelClient`对象来连接到Elasticsearch集群,示例代码如下: ```java RestHighLevelClient client = new RestHighLevelClient( RestClient.builder(new HttpHost("localhost", 9200, "http"))); ``` 2. 创建索引:可以使用`IndexRequest`对象来创建索引,示例代码如下: ```java IndexRequest request = new IndexRequest("index_name"); request.id("document_id"); request.source("field1", "value1", "field2", "value2", "field3", "value3"); IndexResponse response = client.index(request, RequestOptions.DEFAULT); ``` 3. 搜索文档:可以使用`SearchRequest`对象来搜索文档,示例代码如下: ```java SearchRequest request = new SearchRequest("index_name"); SearchSourceBuilder sourceBuilder = new SearchSourceBuilder(); sourceBuilder.query(QueryBuilders.matchQuery("field", "value")); request.source(sourceBuilder); SearchResponse response = client.search(request, RequestOptions.DEFAULT); ``` 4. 聚合数据:可以使用`AggregationBuilders`对象来聚合数据,示例代码如下: ```java SearchRequest request = new SearchRequest("index_name"); SearchSourceBuilder sourceBuilder = new SearchSourceBuilder(); sourceBuilder.aggregation(AggregationBuilders.terms("agg_name").field("field")); request.source(sourceBuilder); SearchResponse response = client.search(request, RequestOptions.DEFAULT); ``` 这些仅仅是Java API的一部分功能,Elasticsearch还提供了丰富的API和插件机制,以支持更多的功能和扩展。如果你需要更多关于Elasticsearch Java API的信息,可以访问官方文档 https://www.elastic.co/guide/en/elasticsearch/client/java-rest/8.0/java-rest-high.html。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值