gpt4 book ai didi

Elasticsearch 基于多个字段和时间条件的排序

转载 作者:行者123 更新时间:2023-11-29 02:56:03 25 4
gpt4 key购买 nike

我有一个小型在线商店应用程序,我想根据有效价格对商品进行分类。所以有正常价格和可选的折扣价。但折扣价格只在一个时间范围内有效,折扣结束时不更新索引。例如:

{price: 2.00, discount:{price:1.10, start:2016-08-11, end:2016-09-14}}

是否可以在排序时包含这样的条件?目标是确保任何给定时间的正确排序顺序。

编辑:目前 ES 版本比较旧,但更新到最新版本不是问题。

最佳答案

这是针对 Elasticsearch 5 和 6(正如我所说,您没有提到 discount 字段的版本和映射)。此外,无论何时运行该查询,您都需要将当前日期和时间作为参数显式传递(以毫秒为单位):

  "sort": {
"_script": {
"type": "number",
"script": {
"lang": "painless",
"source": "if (doc['discount.price']!=null && doc['discount.start'].date.getMillis() < params['time'] && doc['discount.end'].date.getMillis() > params['time']) return doc['discount.price'].value; else return doc['price'].value",
"params": {
"time": 1512717897000
}
},
"order": "desc"
}
}

关于Elasticsearch 基于多个字段和时间条件的排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44522219/

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