gpt4 book ai didi

java - Elasticsearch 中的聚合

转载 作者:行者123 更新时间:2023-11-30 07:05:16 25 4
gpt4 key购买 nike

我想在 Elasticsearch 查询的日期字段上应用 group by 子句。这是我的代码。

SearchRequestBuilder  srb  = client
.prepareSearch(ConstantsValue.indexName)
.setTypes(ConstantsValue._Type)
.addAggregation(

AggregationBuilders
.dateHistogram("aggs")
.field("DTCREATED")
.interval(Interval.MONTH)
.format("yyyy-MM-dd")
.preZone("+05:30")
.preZoneAdjustLargeInterval(true)
.minDocCount(1)
)
.setSize(Integer.MAX_VALUE)
.setQuery(query);

SearchResponse response = srb
.setSearchType(SearchType.QUERY_AND_FETCH)
.setFetchSource(ConstantsValue.fieldList, null)
.execute()
.actionGet();

但是查询没有返回预期结果。

显示结果如下

Value  :{"DTCREATED":"2016-09-29T18:30:00.000Z"}
Key :AVfdaeSC3n3Bn-RaoFgg
Value :{"DTCREATED":"2016-09-29T18:30:00.000Z"}
Key :AVfdaeSC3n3Bn-RaoFgl
Value :{"DTCREATED":"2016-09-29T18:30:00.000Z"}
Key :AVfdaeSC3n3Bn-RaoFgq
Value :{"DTCREATED":"2016-08-31T18:30:00.000Z"}
Key :AVfdaeSC3n3Bn-RaoFgv
Value :{"DTCREATED":"2016-09-06T18:30:00.000Z"}
Key :AVfdaeSC3n3Bn-RaoFg0
Value :{"DTCREATED":"2016-09-22T18:30:00.000Z"}
Key :AVfdaeSC3n3Bn-RaoFg5
Value :{"DTCREATED":"2016-09-22T18:30:00.000Z"}
Key :AVfdaeSC3n3Bn-RaoFhA
Value :{"DTCREATED":"2016-09-12T18:30:00.000Z"}
Key :AVfdaeSC3n3Bn-RaoFhF

我是elasticsearch的新手,不知道我错过了什么。非常感谢任何帮助!

最佳答案

ES 中没有类似 groupby 的子句,但您可以使用 Aggregations为了按您想要的字段进行分组。例如,我使用下面的 post http 请求,以便使用 userid 进行分组并获取每个用户 ID 的计数。

搜索查询如下所示:

http://localhost:9200/response_summary/_search

上面的response_summary就是索引。我正在尝试进行搜索。

请求的正文可以是这样的:

{  
"query":{
"query_string":{
"query":"api:\"smsmessaging\" AND operatorid:\"ROBI\""
}
},
"aggs":{
"total":{
"terms":{
"field":"userid"
},
"aggs":{
"grades_count":{
"value_count":{
"script":"doc['userid'].value"
}
}
}
}
}
}

因此,您可以在 aggs 标记中提及您想要groupby 的字段,并获取上面示例中的计数。您可以根据需要进行修改。可以看看this线程也是如此。

关于java - Elasticsearch 中的聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40254586/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com