gpt4 book ai didi

sorting - 如何在Elasticsearch中按两个日期中的较小者排序?

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

场景:
我有两个日期字段(created_atpublished_on)的数据。在某些情况下,日期不正确,我需要按两个日期中的较小者(较旧)进行排序。

换句话说,对于每个项目,找出较旧的日期,然后使用该日期进行排序。

我从文档中看到,您可以“按顺序”对字段进行排序(例如:按名称排序,然后按城市排序),并且看到一些数字排序选项(最小/最大等)。但是我正在努力实现这一目标。

This post描述了它如何在PostgreSQL之类的系统中工作,但是我知道Elastic是一种完全不同的动物,所以我希望有某种方法可以做到这一点。

谢谢!

最佳答案

您需要从两个字段中提取一个值,然后根据该值进行排序。为此,您需要script based sorting。在查询dsl中,您必须添加以下排序参数:

{
"sort": {
"_script": {
"type": "number",
"script": {
"source": "if(doc['created_at'].value.getMillis() < doc['published_on'].value.getMillis()) { return doc['created_at'].value.getMillis(); } else { return doc['published_on'].value.getMillis(); }",
"lang": "painless"
},
"order": "desc"
}
}
}

关于sorting - 如何在Elasticsearch中按两个日期中的较小者排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54601172/

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