我们的团队目前正在将遗留项目从Elasticsearch v1.7.3迁移到v7.8.0。它大部分是用Scala编写的,因此我们希望替换Java客户端:Maven Repository: org。Elasticsearch> Elasticsearch>
在工作过程中,我们发现了一些我们非常不确定的代码,比如:
SignificantTerms.Bucket bucket = //fethced significant terms;
bucket.getDocCount
bucket.getSupersetDf
bucket.getSubsetSize
bucket.getSupersetSize
,所以我们根本找不到getSupersetDf
,getSubsetSize
和getSupersetSize
代表什么。在ES 1.7.3中。重要术语聚合文档:重要术语聚合| Elasticsearch Reference [1.7] | Elastic
每个bucket只存在doc_count
,bg_count
和score
。这些方法代表什么——我们只能猜测。我们的建议之一是getSupersetDf
与bg_count
的值相同,但再次出现主要问题- Java客户端和Elastic文档中的值之间没有直接映射。
你能帮帮我们吗?谢谢!
我们可以在ES源代码中找到:
@Override
public final XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException {
builder.startObject();
keyToXContent(builder);
builder.field(CommonFields.DOC_COUNT.getPreferredName(), getDocCount());
builder.field(InternalSignificantTerms.SCORE, getSignificanceScore());
builder.field(InternalSignificantTerms.BG_COUNT, getSupersetDf());
getAggregations().toXContentInternal(builder, params);
builder.endObject();
return builder;
}
您可以看到,确实,getSupersetDf
代表bg_count
,它是后台(超集)中包含该术语的文档的数量。
,这表明subsetSize
是doc_count
,而getSupersetSize
指向这个计算。我认为它指的是后台文档的总数(无论它们是否包含术语)。
总结一下:
bucket.getDocCount
:前景计数,各doc_count
显著桶。bucket.getSupersetDf
:背景计数,bg_count
在bucket.getSubsetSize
: total中出现的doc_count
在遗愿清单之外的响应。bucket.getSupersetSize
: total中出现的bg_count
在遗愿清单之外的响应。