Sorting 这可以在弹性搜索查询中完成吗?
我目前正在通过在将事件插入弹性搜索之前预先计算分数来解决这个问题。然而,因为它是基于一个日期,我必须每天重新计算分数。是否可以在查询期间进行此计算 数据: 排名: 使用插入日期创建了4个“bucket”Sorting 这可以在弹性搜索查询中完成吗?,sorting,elasticsearch,ranking,elastica,Sorting,elasticsearch,Ranking,Elastica,我目前正在通过在将事件插入弹性搜索之前预先计算分数来解决这个问题。然而,因为它是基于一个日期,我必须每天重新计算分数。是否可以在查询期间进行此计算 数据: 排名: 使用插入日期创建了4个“bucket” 5天以下的事件 5天以上和10天以下的事件 10天以上和15天以下的事件 超过15天的事件 每个bucket中的事件需要按照得分字段DESC进行排序 预先计算的排名是通过将1000、2000或3000加在分数上,这取决于事件落在哪个桶中 进行查询时,结果按排名排序 如果不使用预先计算的排名,
- 5天以下的事件
- 5天以上和10天以下的事件
- 10天以上和15天以下的事件
- 超过15天的事件
得分
字段DESC
进行排序
预先计算的排名是通过将1000、2000或3000加在分数上,这取决于事件落在哪个桶中
进行查询时,结果按排名排序
如果不使用预先计算的
排名
,我将如何执行此操作 我认为您可以做到这一点。当前预定义评分逻辑的真正痛苦在于,您无法在事件数据在其当前存储桶中过期后向后移动。因为您的存储桶遵循5天的日差对称性。请使用线性日的函数评分,标度为-5天。
查询数据时用当前日期替换原点。根据共享链接设置boost_模式和score_模式。
希望这能起作用。对不起,用线性衰减代替高斯衰减。
{
"title" : "event 1",
"rank" : 1034, // pre-calculated score
"score": 34,
"date" : "2015-10-10 00:00:00",
"meta" : [
{
"date": "2015-10-10 00:00:00",
"type": "insert"
},
{
"date": "2015-12-10 00:00:00",
"type": "outsert"
},
{
"date": "2015-05-10 00:00:00",
"type": "other"
}
]
}
{
"gauss": {
"date_field": {
"origin": "2013-09-17",
"scale": "5d",
"offset": "0d",
"decay" : 0.5
}
}
}