我需要找到相关或相似的帖子,然后按日期对其进行排序。我怎样才能做到这一点? 这是一个查询:
{
"fields":[
"id", "score"
],
"size":0,
"query":{
"function_score":{
"query":{
"bool":{
"should":[
{ "match":{ "main_headline.en":{"query":"some text"}}},
{"match":{"body.en":"some text" }}
],
"must_not":{ "term":{ "id":76484 }}
}
},
"functions":[
{
"gauss":{
"published_at":{ "scale":"140w","decay":0.3
}
}
}]
}
},
"aggregations":{
"postslug":{
"terms":{
"field":"slug",
"size":9,
"order":{"max_score":"desc"}
},
"aggs":{
"max_score":{
"max":{ "script":"_score" }
},
"fields":{
"top_hits":{
"size":1,
"_source":{
"includes":["id", "published_at", "slug"]
}
}
},
"aggs":{
"byDate":{
"max":{"field":"published_at"}
}
}
}
}
}
}
我尝试通过子聚合-byDate
来实现,但是出现错误`在[ags]中找不到聚合器类型[byDate]。如何解决此错误或如何在汇总后对数据进行排序?
答案 0 :(得分:0)
您收到的错误告诉我们Elasticsearch无法找到byDate
聚合类型,我想您打算将其用作聚合的名称(有关更多详细信息,请参见this section of the documentation)。
在您提供的示例中,aggs
与fields
处于同一级别,ES将其解释为另一个子聚合的名称。可能您想将aggs
移到fields
下。
由于您使用的是top_hits
,因此可以使用内置的sort
选项。
希望有帮助!