11、Elasticsearch 搜索排序、相关性及分布式执行详解

Elasticsearch 搜索排序、相关性及分布式执行详解

字符串排序与多字段

在 Elasticsearch 中,分析后的字符串字段属于多值字段,但对其进行排序往往难以得到预期结果。例如,对 “fine old art” 这样的字符串进行分析,会得到三个词项。我们通常希望按第一个词项、第二个词项依次进行字母排序,但 Elasticsearch 在排序时无法利用这些信息。

虽然可以使用 min max 排序模式(默认使用 min ),但这会导致按 “art” 或 “old” 排序,并非我们的本意。

为了对字符串字段进行排序,该字段应仅包含一个词项,即未分析的整个字符串。但我们仍需要对该字段进行分析,以便进行全文查询。

一种简单的方法是在文档中包含两个独立的字段:一个用于搜索的分析字段和一个用于排序的未分析字段。然而,在 _source 字段中存储相同的字符串两次会浪费空间。我们真正想要的是传入一个字段,但以两种不同的方式对其进行索引。所有核心字段类型(字符串、数字、布尔值、日期)都接受 fields 参数,可将简单映射转换为多字段映射。

例如,将简单映射:

"tweet": {
    "type":     "string",
    "analyzer": "english"
}

转换为多字段映射:


                
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值