gpt4 book ai didi

node.js - Elasticsearch基于时间的排序无法正常工作

转载 作者:行者123 更新时间:2023-12-03 01:39:36 25 4
gpt4 key购买 nike

我有20个文档,我正在基于reportid进行汇总。我需要根据时间递减的前10个汇总。但是响应是非常随机的。我想念什么?我正在使用Elasticsearch 6.2.2和node.js 4.5。以下是 Elasticsearch 请求的正文搜索查询。

{
"size": 0,
"sort": [
{
"triggerDate":
{
"order": "desc"
}
}],
"query":
{
"bool":
{
"must": [
{
"query_string":
{
"query": "*",
"analyze_wildcard": true
}
},

{
"range":
{
"triggerDate":
{
"gte": fromTime,
"lte": toTime
}
}
}
],
"must_not": [
{
"query_string":
{
"query": "reportId.keyword:\"\"",
"analyze_wildcard": true
}
}]
}
},
"_source":
{
"excludes": []
},
"aggs":
{
"reportid":
{
"terms":
{
"field": "reportId.keyword",
"size": 10
}
}
}

最佳答案

我认为您需要做的是对reportId.keyword进行聚合,并按日期对聚合进行排序。

所以这是解决方案

{
"size": 0,
"query": {
"bool": {
"must": [
{
"query_string": {
"query": "*",
"analyze_wildcard": true
}
},
{
"range": {
"triggerDate": {
"gte": fromTime,
"lte": toTime
}
}
}
],
"must_not": [
{
"query_string": {
"query": "reportId.keyword:\"\"",
"analyze_wildcard": true
}
}
]
}
},
"_source": {
"excludes": []
},
"aggs": {
"reportid": {
"terms": {
"field": "reportId.keyword",
"size": 10,
"order": {
"2-orderAgg": "desc"
}
},
"aggs": {
"2-orderAgg": {
"max": {
"field": "triggerDate"
}
}
}
}
}
}

您需要按自定义聚合而不是查询结果对聚合结果进行排序。

关于node.js - Elasticsearch基于时间的排序无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48949226/

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