Elasticsearch6.0 重大变化之Java API

Posted blademasterking

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Elasticsearch6.0 重大变化之Java API相关的知识,希望对你有一定的参考价值。

Elasticsearch6.0 Java API 重大变化

最近做的项目中用到了Elasticsearch,ES的版本迭代速度非常快,在此记录一下官方公布的6.0版本的重大变化

  • setSource()方法需要XContentType

    以前setSource方法和其他的接受byte/string类型作为对象源的方法,可以不需要指定XContentType,

    自动检测内容类型已经不再使用,现在当提供bytes或者string类型的source的时候,这些方法需指定XContentType

    作为附加参数

  • DeleteByQueryRequest需要一个明确的查询语句(query)

    在Elasticsearch以前的版本中,DeleteByQueryRequest允许不设置一个明确的query,

    默认使用match_all语句(query)并且所有文档会被删除,从6.0.0版本开始,

    DeleteByQueryRequest需要设置一个明确的匹配语句(query)

  • InternalStats和Stats的 getCountAsString()方法被移除

    • count值在统计聚合中表示的是命中的文档的count值,这个值不需要格式化为String的版本,

    这个方法在5.4版本不赞成使用,

    • 如果需要String类型的count值,使用String.valueOf(getCount())代替
  • ActionRequestBuilder#execute返回值改为ActionFuture

    当通过request builders(client.prepareSearch().execute())来发送一个请求时,

    可能会去再次调用 addListener 返回 ListenableActionFuture。伴随此次变化,返回值被现在

    作为client方法返回的统一的ActionFuture取代,因此,可能不需要联系监听器的期望,

    execute方法接受一个监听器(listener)作为参数来取代之前的方法

  • Terms.Order和Histogram.Order类被BucketOrder取代

    • terms、histogram、date_histogram等聚合的代码已经重构,去使用排序桶的公共代码。

    • 必须使用BucketOrder类来取代Terms.Order和Histogram.Order。

    • 必须调用Bucket.Order类的静态方法来代替直接访问Order内部实例(BucketOrder.count(boolean),BucketOrder.aggregation(String,boolean))的做法。

    • 使用BucketOrder.key(boolean) 依靠 _term 来排序 terms聚合的桶(buckets)

  • getTookInMillis()方法在BuilkReponse、SearchResponse和TermVectorResponse中移除

    在BulkResponse、SearchResponse和TermVectorResponse类中,getTookInMillis()方法已经被移除,

    getTookInMillis()方法很早就被getTook().getMillis()取代了

  • GetField和SearchHitField被DocumentField取代

    原GetField和SearchField类有相同的成员变量和方法,现在统一为DocumentField

  • 一些Aggregation的class文件所属包变化

    • 一些关于排序聚合(geo_distance,date,ip)的衍生class文件被移动到

    org.elasticsearch.search.aggregations.bucket.range包下。

    • 原所属org.elasticsearch.search.aggregations.bucket.terms.support包下的class文件

    移动到org.elasticsearch.search.aggregations.bucket.terms包下

    • Filter Aggregation 的类文件 已经移动到org.elasticsearch.search.aggregations.bucket.filter包下
  • PercentileRanksAggregationBuilder构造函数变化

    百分位排行聚合,现在需要将希望排序的非空非null的double数组,传入builder的构造函数,

    而不是通过setter来配置,以前对应的setter values()方法已经被移除

以上是关于Elasticsearch6.0 重大变化之Java API的主要内容,如果未能解决你的问题,请参考以下文章

CLLocationManager 区域监控与重大位置变化

监控重大位置变化时是不是可以推迟位置更新?

StartUpdatingLocation 与重大变化的位置服务

Docker 1 12新功能探索 新增重大特性

Elasticsearch6.0及其head插件安装

Elasticsearch6.0及其head插件安装