Elasticsearch-排序及Doc Values & Field Data
排序
- Elasticsearch默认采用相关性算分对结果进行降序排序
- 可以通过制定sort参数,自定定义排序规则
- 如果sort参数里没有使用默认的排序字段"_score",则算分为Null
对Text类型排序
排序的过程
- 排序是针对字段原始内容进行的。倒排索引无法发挥作用
- 需要用到正排索引。通过文档id和字段快速得到字段原始内容
- Elasticsearch有两种实现方法
- Field Data
- Doc Values(列式存储,对Text类型无效)
Doc Values vs Field Data

当Text类型字段需要排序的时候,要打开该字段的Field Data
- 默认关闭,可以通过Mapping设置打开。修改设置后,即时生效,无需重建索引。
- 其它类型字段不支持,只支持对Text进行设定。
- 打开后,可以对Text字段进行排序。但是 是对分词后的term排序,所以,结果往往无法满足预期,不建议使用
- 某些情况下打开,满足一些聚合分析的特定需求
关闭Doc Values
- keyword类型字段默认启用,可以通过Mapping设置关闭
- 增加索引的速度,减少磁盘空间
- 如果重新打开,需要重建索引
- 什么时候需要关闭?
- 明确不需要做排序及聚合分析

浙公网安备 33010602011771号