ES 1.7.3 Elasticsearch Java 客户端:重要术语聚合未知值

ES 1.7.3 Elasticsearch Java client: significant terms aggregation unknown values

我们的团队目前正在将遗留项目从 Elasticsearch v1.7.3 迁移到 v7.8.0。它大部分是用 Scala 编写的,因此我们想与此一起替换 Java 客户端:Maven Repository: org.elasticsearch » elasticsearch » 1.7.3

并且在工作期间,我们发现我们非常不确定的代码和平,例如:

SignificantTerms.Bucket bucket = //fethced significant terms;
bucket.getDocCount
bucket.getSupersetDf
bucket.getSubsetSize
bucket.getSupersetSize

所以我们根本没有找到getSupersetDfgetSubsetSizegetSupersetSize代表什么。在 ES 1.7.3 中。重要术语聚合的文档:Significant Terms Aggregation | Elasticsearch Reference [1.7] | Elastic

每个存储桶仅显示 doc_countbg_countscore。这些方法代表什么——我们只能猜测。我们的建议之一是 getSupersetDfbg_count 的值相同,但同样是主要问题 - Java 客户端和 Elastic 文档中的值之间没有直接映射。

你能帮助我们吗?

谢谢!

我们可以在 ES source code 中找到它:

@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,也就是后台(超集)中包含该词条的文档数。

this, suggests that subsetSize is doc_count, while getSupersetSize points to this calculation。我认为是指后台文档总数(是否包含该词)。

总结一下:

  1. bucket.getDocCount:前台计数,每个显着的doc_count 术语桶。

  2. bucket.getSupersetDf:背景计数,bg_count中 每个重要术语桶。

  3. bucket.getSubsetSize:总计 前台文档计数,出现在 遗愿清单之外的响应。

  4. bucket.getSupersetSize:总计 背景文档计数,bg_count 出现在 遗愿清单之外的响应。