gpt4 book ai didi

sorting - 在Elasticsearch中对日期字段进行排序时如何指定 "precision"?

转载 作者:行者123 更新时间:2023-12-02 12:05:10 25 4
gpt4 key购买 nike

我的 Elasticsearch 映射(我使用的是 ES 2.1)中有一个 date 类型的字段(输入格式 epoch_second)。我知道我可以在该字段上进行排序

{
"sort": [
{
"myDateField" : {
"order": "desc"
}
}
]
}

但是这以秒精度排序。我想按“周间隔”(从现在起向后 7 天间隔)排序,并在同一周内再次按分数排序,如下所示(pseduocode):

{
"sort": [
{
"myDateField" : {
"order" : "desc",
"precision" : "week"
}
},
"_score"
]
}

因此,过去 7 天内的所有点击都应同等排名,下一个“排序组”中所有超过 7 天且少于 14 天的点击,依此类推。并且每个“周组”应该再次按分数排序。

换句话来说:“过去 7 天内(与当前查询)最相关的文档是什么(但不要完全过滤掉较旧的文档)?”

背景:事件搜索,显然最近的事件应该最重要。

我怎样才能实现这个目标?

最佳答案

您可能会找到decay function on a function score query对你的情况很有用。它专门设计用于调整文档的分数,其中一个字段距某个定义的起点“较远”。

这适用于日期以及数字和地理点字段。它接受一个 origin 选项,该选项设置比较其他文档的引用日期。方便的是,如果您不提供日期字段的来源,它默认为当前日期(这应该适用于您的场景)。

您可能希望将偏移量设置为 7 天。这样,过去 7 天内的所有文档都将获得同等评分。超出该范围,分数开始下降,具体取决于您使用的衰减函数。

尝试这样的事情:

{
"query": {
"function_score": {
"query": {
"match": {
"field1": "search goes here"
}
},
"functions": [
{
"exp": {
"myDateField": {
"offset": "7d",
"scale": "14d",
"decay": 0.5
}
}
}
]
}
}
}

关于sorting - 在Elasticsearch中对日期字段进行排序时如何指定 "precision"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34933096/

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