一、多字段排序
多值字段比如数组,
假设索引test里有如下文档结构
{
"dates":["2020-06-01","2020-05-02","2019-05-02"]
}
如果要对test里的dates排序该如何?
{
“query”:{
},
"sort": { "dates": { "order": "asc", "mode": "min" } }
}
对于数字或日期,你可以将多值字段减为单值,这可以通过使用 min
、 max
、 avg
或是 sum
排序模式
二、带分词的字符串排序
被解析的字符串字段也是多值字段, 但是很少会按照你想要的方式进行排序。如果你想分析一个字符串 hello es,很可能想要按第一项的字母排序,然后按第二项的字母排序。但是 Elasticsearch 在排序过程中不会是这样。
"title": { "type": "string", "analyzer": "english", "fields": { "raw": { "type": "string", "index": "not_analyzed" } } }
title是使用english分词器,然后再title下再定义一个子索引字段为raw且不分词,那么当需要检索时使用title,当需要排序时使用title.raw
{ "query": { "match": { "title": "hello es" } }, "sort": "title.raw" }