首页 > 解决方案 > 如何使用 solr 中不同字段的间隔计算字段的值总和?

问题描述

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

{请求:[23],时间戳:[1562146437780]}

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

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

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

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

提前致谢

标签: javaapachesolrsolrj

解决方案


您可以通过使用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下的信息构建的。


推荐阅读