ELK合集持续更新(十一):Elasticsearch关键术语之排序
2020-03-28 19:58
351 查看
Elasticsearch关键术语 系列博文 目的只用来了解概念 ; 其中 涉及到的配置和使用 是为了方便日后使用时查询的
排序
ES搜索结果的排序 默认是按照文档的_score相关性算分 算分高的文档优先展示 搜索时可以指定根据某字段进行排序 (类似 SQL的order by)
本质
- 排序是针对原始内容进行的 倒排索引无法发挥作用
- 需要用到正排索引 通过文档ID和字段快速得到字段原始内容
实现排序的两种方式
方式一 设置"doc_values":true 默认
本质
-
DocValues在索引时 和倒排索引一起创建
-
通过序列化把数据结构持久化到磁盘 我们可以充分利用操作系统的内存 而不是 JVM 的 Heap
-
当workingset远小于系统的可用内存 系统会自动将 DocValues保存在内存中 使得其读写十分高速
-
不过 当其远大于可用内存时 操作系统会自动把DocValues写入磁盘
-
很显然 这样性能会比在内存中差很多 但是它的大小就不再局限于服务器的内存了 如果是使用JVM的Heap来实现那么只能是因为OutOfMemory导致程序崩溃了
作用
-
text类型的字段不能排序
-
其他类型的字段都可排序 聚合 脚本操作
-
可避免大量JVM heap占用而导致内存溢出
-
但 降低索引速度 占用额外磁盘空间
设置关闭
-
作用
增加索引速度 减少磁盘空间
-
但 设置后的字段不能做排序 聚合 脚本操作
设置mapping
PUT index名/_mapping { "properties":{ "字段名":{ "type":"keyword", "doc_values":false } } }
设置重新打开
-
需要重建索引
方式二 设置"fielddata":true 默认flase
本质
-
搜索时动态创建
-
创建位置 JVM heap
作用
-
text类型的字段可排序
-
索引速度快 不占用额外磁盘空间
-
文档过多时 动态创建开销大 占用过多JVM heap 太多字段设置了开启容易outofmemory内存溢出
设置开启
- 设置mapping
PUT kibana_sample_data_ecommerce/_mapping { "properties":{ "customer_full_name":{ "type":"text", "fielddata":true, "fields":{ "keyword":{ "type":"keyword", "ignore_above":256 } } } } }
参考
阮一名资料
官方文档
百度
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- ELK合集持续更新(十四):Elasticsearch关键术语之Aggregation聚合
- ELK合集持续更新(十三):Elasticsearch关键术语之Analysis分词
- ELK合集持续更新(十二):Elasticsearch关键术语之分布式搜索
- 开始IMS学习-相关名词和术语(持续更新)
- 术语(更新持续中。。。)
- IT 术语大全(持续更新)
- 各种排序的实现与复杂度分析(持续更新)
- 算法-0-排序-汇总(持续更新)-目录呈现
- LeetCode JAVA语言全部解题思路+答案代码+多种解法+关键注释(持续更新...)
- 网络安全 行话 术语(持续更新中....)
- 关键书籍,边读边记,持续更新...
- 排序小结(持续更新中。。。)
- elasticsearch学习过程中遇到的问题以及处理方式(持续更新...)
- 熟悉了HDFS的基本架构,了解这方面的专业术语(持续更新)
- Bootstrap 中 下拉菜单和滚动监听插件(十一)(持续更新中。。。)
- ELK合集持续更新(二十二):Elasticsearch集群的数据备份和迁移
- js关于数组简易排序的一些写法(持续更新)
- Python 快速排序 堆排序——Python实现一些算法持续更新
- Java实现数据排序(冒泡、选择、插入、快速排序)---方法持续更新中
- linux术语解析(持续更新)