java - 如何使用 solr 中不同字段的间隔计算字段的值之和?

标签 java apache solr solrj

我有多个以下形式的 solr 文档

{ requests : [23], timestamp : [1562146437780] }

我必须获取时间戳间隔内的请求总和。

我尝试使用构面,但不知道如何在两个字段上使用

我确实尝试过这个。但给了我时间戳间隔内的文档计数。

 query.addNumericRangeFacet(TIMESTAMP, startTime, endTime, gap);

提前致谢

最佳答案

您可以使用 the JSON facet API for range facets 来实现此目的。这些将允许您提供一个与上面的方面中的域(即存储桶中的文档)一起使用的子方面。

首先创建一个范围分面:

RangeFacetMap rangeFacet = new RangeFacetMap(TIMESTAMP, startTime, endTime, gap);

然后添加一个调用总和的子方面:

rangeFacet.withStatSubFacet("requests_sum", "sum(requests)")

您可以使用以下方式将此请求发送到 Solr:

final JsonQueryRequest request = new JsonQueryRequest()
    .setQuery("*:*")
    .withFacet("timestamps", rangeFacet);
QueryResponse queryResponse = request.process(solrClient, COLLECTION_NAME);

我现在没有要测试的实例或文档,但这是根据 Nester Facet Example 下的信息构建的在引用指南中。

关于java - 如何使用 solr 中不同字段的间隔计算字段的值之和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56870618/

相关文章:

hadoop - nutch1.14去重失败

java - RestTemplate 有时会给出 500 内部服务器错误

php - 访问 DOCUMENT_ROOT 之外的 PHP 类文件

java - Solr——从文档收集器访问 reqh 对象

solr - 将 Solr 与 'boilerplate' DD4T 一起使用

linux - Fedora 配置以启用 TLS 1.2

java - 为什么这里不需要 return 语句?

java - 为什么Java double 印格式根据是否使用String.format而不同

java - 如何将 json 转换为 Map<String, Object> 确保整数为 Integer

php - 使用 Apache 2 和 PHP 5.5 安装 MySQLi