Elasticsearch 仪表板中新用户计数的结果不一致

Inconsistent Results for New Users Count in Elasticsearch Dashboard

提问人:DanTe 提问时间:11/17/2023 更新时间:11/17/2023 访问量:10

问:

我在显示当前活跃用户、新用户和消息总数的仪表板中遇到了 Elasticsearch 版本“8.4.1”的问题。 数据是跟踪过去两个月的,从 5 月到 8 月。

问题在于新用户数量的不一致。例如,在 7 月份,计数是 ,但在昨天重新测试时,它显示 .在 8 月也观察到了同样的不一致,其中计数是 ,但现在是 。1902190338943899

其他计数是一致的(消息总数、活跃用户数)。
我使用相同的逻辑来检索活跃用户计数,唯一的区别是用于日期范围的字段。我用于新用户和活跃用户。这两个字段属于同一类型:
created_datedateTime

"created_date": {
"type": "date_nanos",
"store": true,
"format": "date_optional_time" }

以下是我用来获取新用户计数的 Java 代码片段:

private Terms getNewUsersTerms(Integer botId, String from, String to) {
try {
    RestHighLevelClient client = getElasticClient(botId);

    AggregationBuilder aggregationBuilder = AggregationBuilders.terms("uniqueIds").field("currentState.user.id").size(Integer.MAX_VALUE);

    QueryBuilder queryBuilder = QueryBuilders.boolQuery()
        .must(QueryBuilders.matchAllQuery())
        .filter(QueryBuilders.rangeQuery("currentState.created_date").gte("2023-08-01").lte("2023-08-31"));

    SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder()
        .aggregation(aggregationBuilder)
        .query(queryBuilder).size(0);

    SearchRequest searchRequest = new SearchRequest(botId + INDEX_POSTFIX)
        .source(searchSourceBuilder);

    SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
    return searchResponse.getAggregations().get("uniqueIds");
} catch (Exception e) {
    logger.warn(e.getMessage(), e);
    return null;
}}

我正在寻求指导,了解我的方法中可能缺少什么,以及我可以采取哪些步骤来识别和解决此不一致问题。任何帮助将不胜感激!

java spring-boot elasticsearch

评论

0赞 Paulo 11/17/2023
这是 elasticsearch 记录在案的行为:elastic.co/guide/en/elasticsearch/reference/current/...
0赞 Val 11/17/2023
您是否介意使用两个不同的计数共享聚合查询的原始结果?

答: 暂无答案