我有 2 个弹性类型的字段,即timeCreated
和timeUpdated
。现在我的业务案例是我们应该始终按 订购timeUpdated
,除非它是(或不存在),这null
显然给我们留下了始终设置的 。timeCreated
现在,根据我对 elasticsearch 中排序工作原理的理解,以下内容将不起作用,因为它将按timeUpdated
ANDtimeCreated
一起排序,而不是按照我正在寻找的方式。
"query": {
"match_all": {}
},
"sort": {
"timeUpdated": {"order": "desc", "missing": "_last"},
"timeCreated": {"order": "desc"}
}
我不确定这是否可能,但弹性很棒,所以我希望这是我在文档中错过的一件简单的事情。
我正在使用使用 Elastica 的 PHP 的最新版本(我相信是 1.6)(尽管这与原始问题的差异为零)。
编辑
例如,如果我有 3 个文档:
1 - {"timeCreated": "2015-07-08T08:00:00Z"},
2 - {"timeCreated": "2015-05-08T10:00:00Z", "timeUpdated": "2015-07-09T08:00:00"}
3 - {"timeCreated": "2015-07-10T08:00:00Z"}
它应该显示的顺序必须是3, 2, 1
. 我得到的是2, 3, 1
.