ElasticSearch 应用开发(八)Java High Level Rest Client——Java API


1.概述

Java High Level REST Client

Elasticsearch 官方高级客户端: 基于低级客户端,提供特定的方法的API,并处理请求编码和响应解码

Java高级REST客户端可以在Java Low Level REST客户机之上工作。 其主要目标是公开特定方法的API,接受请求对象作为参数并返回响应对象,以便客户端自己处理请求编组和响应解组。

每个API可以同步或异步地调用。 同步方法返回一个响应对象,而名称以 async 后缀结尾的异步方法需要收到响应或错误后才会通知(在低级别客户端管理的线程池上)的侦听器参数。

Java高级REST客户端依赖于 Elasticsearch core项目。 它接受与 TransportClient 相同的请求参数,并返回相同的响应对象。

ElasticSeach6.6.0版本 Java Rest High Client,官网API,如下。相比之前,的确丰富了很多。

https://www.elastic.co/guide/en/elasticsearch/client/java-rest/6.6/java-rest-high.html 

2.Java High Level REST Client

2.1起步

本节介绍的内容,从如何high-level REST client获取包到在应用程序中使用高级REST客户端

2.1.1兼容性

Java高级REST客户端需要Java 1.8,并依赖于Elasticsearch核心项目。 客户端版本要与客户端开发的Elasticsearch版本相同。 它接受与 TransportClient 相同的请求参数,并返回相同的响应对象。 如果需要将应用程序从TransportClient迁移到新的REST客户端,请参阅 迁移指南

高级客户端保证能够与运行在相同主版本和大于或等于次要版本的任何Elasticsearch节点进行通信。它不需要与它进行通信的弹性搜索节点相同的次要版本,因为它是向前兼容的,意味着它支持与之前开发的弹性搜索的更新版本进行通信。

6.0 客户端能够与任何 6.x Elasticsearch 节点进行通信,而 6.1 客户端确实能够与 6.1,6.2 和以后的 6.x 版本进行通信,但与以前的 Elasticsearch 节点版本通信时可能会出现不兼容问题例如 6.1 到 6.0 之间,例如 6.1 客户端支持而 6.0 节点不知道的某些API的新请求主体字段。

建议在将Elasticsearch集群升级到新的主要版本时升级高级客户端,因为REST API突破性更改可能会导致意外的结果,具体取决于请求所击中的节点,新添加的API只能由较新版本的客户端。一旦群集中的所有节点都升级到新的主版本,则客户端应当更新。

2.1.2 Javadoc

The javadoc for the REST high level client can be found at https://artifacts.elastic.co/javadoc/org/elasticsearch/client/elasticsearch-rest-high-level-client/6.6.2/index.html.

2.1.3Maven 仓库

高级 Java REST 客户端被托管在 Maven 中央仓库里。所需的最低Java版本为 1.8。

高级 REST 客户端与 elasticsearch 的发行周期相同。可以使用期望的版本进行替换。

Maven 配置

若使用 Maven 作依赖管理,你可以这样配置依赖。将下列内容添加到你的 pom.xml 文件里:

<dependency>
    <groupId>org.elasticsearch.client</groupId>
    <artifactId>elasticsearch-rest-high-level-client</artifactId>
    <version>6.6.0</version>
</dependency>

2.1.4依赖项

高级 Java REST Client 依赖以下包:

  • org.elasticsearch.client:elasticsearch-rest-client
  • org.elasticsearch:elasticsearch

2.1.5初始化

参考之前的内容:

ElasticSearch 应用开发(二)Java Client 连接ElasticSearch集群

2.1.6 RequestOptions

RestHighLevelClient 所有APIs都能接收一个能够自定义request请求的RequestOptions,而且不用改变elasticsearch如何执行request。例如,可以设定NodeSelector 决定哪个节点接收request。具体查看: low level client documentation 

 2.2Document APIs

The Java High Level REST Client supports the following Document APIs:

Single document APIs

Multi-document APIs

2.3 Search APIs

The Java High Level REST Client supports the following Search APIs:

2.4Miscellaneous(其他)APIs

The Java High Level REST Client supports the following Miscellaneous APIs:

2.5 Indices APIs

The Java High Level REST Client supports the following Indices APIs:

Index Management

Mapping Management

Alias Management

Template Management

2.6Cluster APIs

The Java High Level REST Client supports the following Cluster APIs:

2.7Ingest APIs

The Java High Level REST Client supports the following Ingest APIs:

2.8Snapshot APIs

The Java High Level REST Client supports the following Snapshot APIs:

2.9Tasks APIs

The Java High Level REST Client supports the following Tasks APIs:

2.10Script APIs

The Java High Level REST Client supports the following Scripts APIs:

2.11Licensing APIs

The Java High Level REST Client supports the following Licensing APIs:

2.12Machine Learning APIs

The Java High Level REST Client supports the following Machine Learning APIs:

2.13Migration APIs

The Java High Level REST Client supports the following Migration APIs:

2.14Rollup APIs

The Java High Level REST Client supports the following Rollup APIs:

2.14Security APIs

The Java High Level REST Client supports the following Security APIs:

2.15Watcher APIs

The Java High Level REST Client supports the following Watcher APIs:

2.16Graph APIs

The Java High Level REST Client supports the following Graph APIs:

2.17CCR APIs

The Java High Level REST Client supports the following CCR APIs:

2.18Index Lifecycle Management APIs

The Java High Level REST Client supports the following Index Lifecycle Management APIs:

2.19Using Java Builders

Java高级REST客户端依赖于 Elasticsearch 核心项目提供的不同类型的 Java Builders 对象,包括:

(一)Query Builders

Query builders只适用于创建一次搜索请求,每次查询由 Query DSL支持。每一个Query builder由QueryBuilder 接口实现,并允许对每个给定类型的query设置特定参数。一旦完成创建, QueryBuilder 能够设置为SearchSourceBuilder的参数.  Search Request 展示了使用 SearchSourceBuilder 和QueryBuilder 进行搜索的例子.过程如下图所示:

Building Search Queries (如下所示)页给出 与QueryBuilder 相对于的 QueryBuilders 进行搜索的函数。

This page lists all the available search queries with their corresponding QueryBuilder class name and helper method name in the QueryBuilders utility class.

Match All Query

Search QueryQueryBuilder ClassMethod in QueryBuilders

Match All

MatchAllQueryBuilder

QueryBuilders.matchAllQuery()

Full Text Queries

Search QueryQueryBuilder ClassMethod in QueryBuilders

Match

MatchQueryBuilder

QueryBuilders.matchQuery()

Match Phrase

MatchPhraseQueryBuilder

QueryBuilders.matchPhraseQuery()

Match Phrase Prefix

MatchPhrasePrefixQueryBuilder

QueryBuilders.matchPhrasePrefixQuery()

Multi Match

MultiMatchQueryBuilder

QueryBuilders.multiMatchQuery()

Common Terms

CommonTermsQueryBuilder

QueryBuilders.commonTermsQuery()

Query String

QueryStringQueryBuilder

QueryBuilders.queryStringQuery()

Simple Query String

SimpleQueryStringBuilder

QueryBuilders.simpleQueryStringQuery()

Term level queries

Search QueryQueryBuilder ClassMethod in QueryBuilders

Term

TermQueryBuilder

QueryBuilders.termQuery()

Terms

TermsQueryBuilder

QueryBuilders.termsQuery()

Range

RangeQueryBuilder

QueryBuilders.rangeQuery()

Exists

ExistsQueryBuilder

QueryBuilders.existsQuery()

Prefix

PrefixQueryBuilder

QueryBuilders.prefixQuery()

Wildcard

WildcardQueryBuilder

QueryBuilders.wildcardQuery()

Regexp

RegexpQueryBuilder

QueryBuilders.regexpQuery()

Fuzzy

FuzzyQueryBuilder

QueryBuilders.fuzzyQuery()

Type

TypeQueryBuilder

QueryBuilders.typeQuery()

Ids

IdsQueryBuilder

QueryBuilders.idsQuery()

Compound queries

Search QueryQueryBuilder ClassMethod in QueryBuilders

Constant Score

ConstantScoreQueryBuilder

QueryBuilders.constantScoreQuery()

Bool

BoolQueryBuilder

QueryBuilders.boolQuery()

Dis Max

DisMaxQueryBuilder

QueryBuilders.disMaxQuery()

Function Score

FunctionScoreQueryBuilder

QueryBuilders.functionScoreQuery()

Boosting

BoostingQueryBuilder

QueryBuilders.boostingQuery()

Joining queries

Search QueryQueryBuilder ClassMethod in QueryBuilders

Nested

NestedQueryBuilder

QueryBuilders.nestedQuery()

Has Child

HasChildQueryBuilder

 

Has Parent

HasParentQueryBuilder

 

Parent Id

ParentIdQueryBuilder

 

Geo queries

Search QueryQueryBuilder ClassMethod in QueryBuilders

GeoShape

GeoShapeQueryBuilder

QueryBuilders.geoShapeQuery()

Geo Bounding Box

GeoBoundingBoxQueryBuilder

QueryBuilders.geoBoundingBoxQuery()

Geo Distance

GeoDistanceQueryBuilder

QueryBuilders.geoDistanceQuery()

Geo Polygon

GeoPolygonQueryBuilder

QueryBuilders.geoPolygonQuery()

Specialized queries

Search QueryQueryBuilder ClassMethod in QueryBuilders

More Like This

MoreLikeThisQueryBuilder

QueryBuilders.moreLikeThisQuery()

Script

ScriptQueryBuilder

QueryBuilders.scriptQuery()

Percolate

PercolateQueryBuilder

 

Wrapper

WrapperQueryBuilder

QueryBuilders.wrapperQuery()

Span queries

Search QueryQueryBuilder ClassMethod in QueryBuilders

Span Term

SpanTermQueryBuilder

QueryBuilders.spanTermQuery()

Span Multi Term

SpanMultiTermQueryBuilder

QueryBuilders.spanMultiTermQueryBuilder()

Span First

SpanFirstQueryBuilder

QueryBuilders.spanFirstQuery()

Span Near

SpanNearQueryBuilder

QueryBuilders.spanNearQuery()

Span Or

SpanOrQueryBuilder

QueryBuilders.spanOrQuery()

Span Not

SpanNotQueryBuilder

QueryBuilders.spanNotQuery()

Span Containing

SpanContainingQueryBuilder

QueryBuilders.spanContainingQuery()

Span Within

SpanWithinQueryBuilder

QueryBuilders.spanWithinQuery()

Span Field Masking

FieldMaskingSpanQueryBuilder

QueryBuilders.fieldMaskingSpanQuery()

(二)Aggregation Builders

和query builders类似,在搜索执行的过程,aggregation builders是用来聚合计算的。每一个类型的aggregation builder,都有与之对应的并且由ELasticsearch支持的aggregation (or pipeline aggregation)。创建成功后,`AggregationBuilder 可以作为SearchSourceBuilder的参数。  Search Request page,包含 AggregationBuilder 用于 SearchSourceBuilder 进行聚合计算的例子. The Building Aggregations page 列出了,AggregationBuilder 和 AggregationBuilders 相对于的帮助方法(如下所示)。

This page lists all the available aggregations with their corresponding AggregationBuilder class name and helper method name in the AggregationBuilders or PipelineAggregatorBuilders utility classes.

Metrics Aggregations

AggregationAggregationBuilder ClassMethod in AggregationBuilders

Avg

AvgAggregationBuilder

AggregationBuilders.avg()

Cardinality

CardinalityAggregationBuilder

AggregationBuilders.cardinality()

Extended Stats

ExtendedStatsAggregationBuilder

AggregationBuilders.extendedStats()

Geo Bounds

GeoBoundsAggregationBuilder

AggregationBuilders.geoBounds()

Geo Centroid

GeoCentroidAggregationBuilder

AggregationBuilders.geoCentroid()

Max

MaxAggregationBuilder

AggregationBuilders.max()

Min

MinxAggregationBuilder

AggregationBuilders.min()

Percentiles

PercentilesAggregationBuilder

AggregationBuilders.percentiles()

Percentile Ranks

PercentileRanksAggregationBuilder

AggregationBuilders.percentileRanks()

Scripted Metric

ScriptedMetricAggregationBuilder

AggregationBuilders.scriptedMetric()

Stats

StatsAggregationBuilder

AggregationBuilders.stats()

Sum

SumAggregationBuilder

AggregationBuilders.sum()

Top hits

TopHitsAggregationBuilder

AggregationBuilders.topHits()

Value Count

ValueCountAggregationBuilder

AggregationBuilders.count()

Bucket Aggregations

AggregationAggregationBuilder ClassMethod in AggregationBuilders

Adjacency Matrix

AdjacencyMatrixAggregationBuilder

AggregationBuilders.adjacencyMatrix()

Children

ChildrenAggregationBuilder

 

Date Histogram

DateHistogramAggregationBuilder

AggregationBuilders.dateHistogram()

Date Range

DateRangeAggregationBuilder

AggregationBuilders.dateRange()

Diversified Sampler

DiversifiedAggregationBuilder

AggregationBuilders.diversifiedSampler()

Filter

FilterAggregationBuilder

AggregationBuilders.filter()

Filters

FiltersAggregationBuilder

AggregationBuilders.filters()

Geo Distance

GeoDistanceAggregationBuilder

AggregationBuilders.geoDistance()

GeoHash Grid

GeoGridAggregationBuilder

AggregationBuilders.geohashGrid()

Global

GlobalAggregationBuilder

AggregationBuilders.global()

Histogram

HistogramAggregationBuilder

AggregationBuilders.histogram()

IP Range

IpRangeAggregationBuilder

AggregationBuilders.ipRange()

Missing

MissingAggregationBuilder

AggregationBuilders.missing()

Nested

NestedAggregationBuilder

AggregationBuilders.nested()

Range

RangeAggregationBuilder

AggregationBuilders.range()

Reverse nested

ReverseNestedAggregationBuilder

AggregationBuilders.reverseNested()

Sampler

SamplerAggregationBuilder

AggregationBuilders.sampler()

Significant Terms

SignificantTermsAggregationBuilder

AggregationBuilders.significantTerms()

Significant Text

SignificantTextAggregationBuilder

AggregationBuilders.significantText()

Terms

TermsAggregationBuilder

AggregationBuilders.terms()

Pipeline Aggregations

Pipeline onPipelineAggregationBuilder ClassMethod in PipelineAggregatorBuilders

Avg Bucket

AvgBucketPipelineAggregationBuilder

PipelineAggregatorBuilders.avgBucket()

Derivative

DerivativePipelineAggregationBuilder

PipelineAggregatorBuilders.derivative()

Max Bucket

MaxBucketPipelineAggregationBuilder

PipelineAggregatorBuilders.maxBucket()

Min Bucket

MinBucketPipelineAggregationBuilder

PipelineAggregatorBuilders.minBucket()

Sum Bucket

SumBucketPipelineAggregationBuilder

PipelineAggregatorBuilders.sumBucket()

Stats Bucket

StatsBucketPipelineAggregationBuilder

PipelineAggregatorBuilders.statsBucket()

Extended Stats Bucket

ExtendedStatsBucketPipelineAggregationBuilder

PipelineAggregatorBuilders.extendedStatsBucket()

Percentiles Bucket

PercentilesBucketPipelineAggregationBuilder

PipelineAggregatorBuilders.percentilesBucket()

Moving Average

MovAvgPipelineAggregationBuilder

PipelineAggregatorBuilders.movingAvg()

Cumulative Sum

CumulativeSumPipelineAggregationBuilder

PipelineAggregatorBuilders.cumulativeSum()

Bucket Script

BucketScriptPipelineAggregationBuilder

PipelineAggregatorBuilders.bucketScript()

Bucket Selector

BucketSelectorPipelineAggregationBuilder

PipelineAggregatorBuilders.bucketSelector()

Serial Differencing

SerialDiffPipelineAggregationBuilder

PipelineAggregatorBuilders.diff()

Matrix Aggregations

AggregationAggregationBuilder ClassMethod in MatrixStatsAggregationBuilders

Matrix Stats

MatrixStatsAggregationBuilder

MatrixStatsAggregationBuilders.matrixStats()

2.20Migration Guide

本节介绍如何将现有代码从 TransportClient 迁移到使用 Elasticsearch 5.6.0 版本发布的新的 Java 高级 REST 客户端。

3.总结

ElasticSearch6.6中,Rest High Level Client的API如下 ,以Async的都是异步请求。

如果API没能够满足请求,可以通过获取LowLevelClient,发送Http请求。 

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值