问题: 排序是在当前结果集中排 还是 排所有的文档。
答案: 排序是在索引创建时排所有的文档,查询时候会根据查询结果集,按排序规则获取对应的排序。
原因:
- 排序为 转置倒排索引。 转置结构 被称为 列存储。 Doc Values 为 列式存储结构。
说明: Doc Values 就是一种列式存储结构,默认情况下每个字段的 Doc Values 都是激活的,Doc Values 是在索引时创建的,当字段索引时,Elasticsearch 为了能够快速检索,会把字段的值加入倒排索引中,同时它也会存储该字段的 Doc Values。
用途: 排序,聚合,过滤,字段相关的脚本计算。
加载: 内存空间够加载内存;内存不够加载到系统页缓存中。
排序发生在索引时建立的平行数据结构中。
字符类型排序使用注意:
- 字符串字段进行排序,字段应仅包含一项:整个no_analyzed字符串。
- 文本字段没有针对需要每个文档字段数据的操作(如聚合和排序)进行优化,因此这些操作在默认情况下是禁用的。改用keyword 关键字字段