英文:
Replacing InternalSimpleValue constructor in ElasticSearch version 7
问题
我正在将ElasticSearch Java代码从5.6迁移到7.7版本。InternalSimpleValue的构造函数已从public更改为protected访问。也许Elastic有意地不向后兼容。
只是想知道是否有已知的替代方法或解决方法?其他5.6代码具有可用的替代7.7类,但似乎在InternalSimpleValue构造函数的情况下未应用此方法。
以下是5.6版本的代码片段。
import org.elasticsearch.search.aggregations.pipeline.InternalSimpleValue;
@Override
public final SearchResponse execute(HttpServletRequest httpRequest, TemplateRequest request, SearchResponse response) {
SearchResponse ret = response;
Aggregations aggregations = response.getAggregations();
if (null != aggregations) {
@SuppressWarnings("unchecked") List<InternalAggregation> aggs = (List<InternalAggregation>) (List<?>) (aggregations.asList());
// 调用实现以计算值
Double value = buildValue(httpRequest, request, response);
aggs.add(new InternalSimpleValue(aggregationName, value, DocValueFormat.RAW, null, null));
// 其他操作...
}
}
英文:
I am migrating ElasticSearch Java code from 5.6 to 7.7.
The constructor for InternalSimpleValue has been refactored from public to protected access. Perhaps Elastic are intentionally non-backward compatible.
Just wondering if there is a known replacement or workaround for this?
Other 5.6 code have alternative 7.7 classes that can be used but seemingly this approach hasn't been applied in the case of the InternalSimpleValue constructor.
Here is a code snippet of the 5.6 version.
import org.elasticsearch.search.aggregations.pipeline.InternalSimpleValue;
@Override
public final SearchResponse execute(HttpServletRequest httpRequest, TemplateRequest request, SearchResponse response) {
SearchResponse ret = response;
Aggregations aggregations = response.getAggregations();
if (null != aggregations) {
@SuppressWarnings("unchecked") List<InternalAggregation> aggs = (List<InternalAggregation>) (List<?>) (aggregations.asList());
// call implementation to calculate value
Double value = buildValue(httpRequest, request, response);
aggs.add(new InternalSimpleValue(aggregationName, value, DocValueFormat.RAW, null, null));
....
}
}
答案1
得分: 1
构造函数在此提交中被设为包级可见,时间是在2018年10月(7.0发布时),因为他们认为太多聚合类是公共的。
看起来他们最近(2020年5月)在此提交中撤销了这个更改,并在7.9分支中再次将构造函数设为公共。但不幸的是,7.9尚未发布。
英文:
The constructor was made package protected in this commit in October 2018 (when 7.0 came out) because they thought too many aggregation classes were public.
It looks like they've recently (May 2020) reverted that change in this commit and made the constructor public again in the 7.9 branch. But unfortunately, 7.9 has not been released yet.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论