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设置关闭
    • 增加索引的速度,减少磁盘空间
  • 如果重新打开,需要重建索引
  • 什么时候需要关闭?
    • 明确不需要做排序及聚合分析

 

posted @ 2021-01-07 18:11  下山打老虎i  阅读(221)  评论(0)    收藏  举报