ElasticSearch多值字段排序和带分词的字符串排序

一、多字段排序

多值字段比如数组,

假设索引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"
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值