Elasticsearch关键术语 系列博文 目的只用来了解概念 ; 其中 涉及到的配置和使用 是为了方便日后使用时查询的
排序
ES搜索结果的排序 默认是按照文档的_score相关性算分 算分高的文档优先展示 搜索时可以指定根据某字段进行排序 (类似 SQL的order by)
本质
- 排序是针对原始内容进行的 倒排索引无法发挥作用
- 需要用到正排索引 通过文档ID和字段快速得到字段原始内容
实现排序的两种方式
方式一 设置"doc_values":true 默认
本质
-
DocValues在索引时 和倒排索引一起创建
-
通过序列化把数据结构持久化到磁盘 我们可以充分利用操作系统的内存 而不是 JVM 的 Heap
-
当workingset远小于系统的可用内存 系统会自动将 DocValues保存在内存中 使得其读写十分高速
-
不过 当其远大于可用内存时 操作系统会自动把DocValues写入磁盘
-
很显然 这样性能会比在内存中差很多 但是它的大小就不再局限于服务器的内存了 如果是使用JVM的Heap来实现那么只能是因为OutOfMemory导致程序崩溃了
作用
-
text类型的字段不能排序
-
其他类型的字段都可排序 聚合 脚本操作
-
可避免大量JVM heap占用而导致内存溢出
-
但 降低索引速度 占用额外