In-memory模式中,fielddata受到heap内存大小限制,虽然这个问题可以通过集群的横向扩容解决——可需要经常增加节点——而且即使加了,你还是会发现在其他一些资源利用不充分的节点上,在排序和聚合查询的时候仍然会消耗你大量的heap空间。
fielddata字段数据默认下,会频繁的在内存当中加载。但这不是唯一的方法,在索引数据时,fielddata字段数据还可以被写在磁盘中,这种方式可以提供和加载到内存中的一样的功能,而不会占用heap的内存空间。
Docvalues是在1.0.0之后加入到elasticsearch中的。通过基准测试与性能分析,各类的瓶颈——无论是elasticsearch还是lucene,都已经被发现并且已经被移除了。但是直到现在还是远远慢于字段数据放内存的in-memory方式。
1、存放在磁盘代替存放内存,可以允许你的集群负载大量fielddata字段数据而不会超量使用内存。这样,你的heap space就可以设置小一些了,对垃圾回收的速度有所帮助,理所当然的,节点也会更稳定些。
2、DocValues是索引时建立的,而不是搜索的时候。当通过非反向的反向索引搜索时候,in-memort方式,内存中的字段数据必须被频繁的读写,而doc vales 是预先建立的,并能更快的初始化。
像trade-off这种索引量大的搜索,访问fielddata会比较缓慢,设置docvalues会有显著的效果,在大量请求的时候,你甚至不会注意到你的搜索会变慢。结合更快的垃圾回收机制和初始化时间,你会留意到搜索性能会得到有效提升。
文件系统的缓存空间越多,docvalue的性能会越好。如果文件都是docvalues并且都位于文件系统的缓存中,那么访问这些文件的速度几乎与访问内存媲美的。而文件系统缓存由内核控制而非JVM。
启动DocValues
numeric, date, Boolean, binary, and geo-point这些字段以及not_analyzed的字符串可以设置Docvalues属性。一般不处理analyze的字符串字段。 Docvalues在mapping重的每个字段属性中定义,这样对于不同的字段,可以结合in-memory与docvalues使用。
PUT /music/_mapping/song
{
“properties” : {
“tag”: {
“type”: “string”,
“index” : “not_analyzed”,
“doc_values”: true
}
}
}
设置了docvalues之后,字段创建时,就是用磁盘存储fielddata而不是内存存储fielddata了。
就这样!不需要再配置其他东西,查询,聚合,排序,以及一般的功能脚本;他们现在都会用到docvalues了。
你可以随便的使用docvalues这参数。用得越多,你使用的heap内存空间就可以越少。在不久的将来,docvalues应该会变成默认的参数。
原文来自:http://www.elastic.co/guide/en/elasticsearch/guide/current/doc-values.html#_enabling_doc_values
相关推荐
Elasticsearch的source字段详解,带图说明;总结性的文档。
内容包括9部分 一、 Elasticsearch 简介 简单描述Elasticsearch Elasticsearch的特性 分布式、全文检索、近实时搜索和分析、高可用、模式自由、...八、Elasticsearch使用过程中的坑 九、Elasticsearch写一致性保障
1_elasticsearch技术解析与实战1_elasticsearch技术解析与实战1_elasticsearch技术解析与实战
es的浏览器插件。elasticsearch-head是一个用于管理Elasticsearch的web前端插件,搞过ES的同学应该都了解。该插件在es5中可以以独立服务的形式进行安装使用。本文将介绍如何操作。
解压出来就是elasticsearch 3.4.3 部署文件 elasticsearch_linux64_6.4.3.tar.gz
熟悉Elasticsearch的朋友肯定都知道Elasticsearch Head,这是一个elasticsearch的很好用的插件之一,以往elasticsearch5.x之前的版本,对应的Elasticsearch Head的安装相对来说还简单一些,5.x之后安装需要依赖于...
Elasticsearch APIs.postman_collection Elasticsearch 常用接口的 API 地址,导入 postman 后可以定义直接使用,不用自己再去官网对照文档了,已包含绝大多数原生 API 地址。
112 3.3.8 _source字段 114 3.3.9 _type字段 115 3.3.10 _uid字段 115 3.4 映射参数 116 3.4.1 analyzer参数 116 3.4.2 boost参数 118 3.4.3 coerce参数 119 3.4.4 copy_to参数 120 3.4.5 doc_values参数 121 3.4.6 ...
一个搜索框架的管理界面项目,可以监控管理相关的微服务
Elasticsearch警报守护进程_Go_Shell_下载.zip
Elasticsearch实战与原理解析 源代码
elasticsearch-7.9.2-x86_64.rpm
elasticsearch7.5集群搭建_kibana
Elasticsearch技术解析与实战,书藉高清,带索引书签目录,非常方便阅读。
elasticsearch-head
ElasticSearch Head 0.1.5插件,免费使用 ,不用金币免费使用 明明这么好的插件,什么人有脸要金币才能下载,无耻!
1. 产生Data too large异常...ES在查询时,会将索引数据缓存在内存(JVM)中: 驱逐线 和 断路器。当缓存数据到达驱逐线时,会自动驱逐掉部分数据,把缓存保持在安全的范围内。当用户准备执行某个查询操作时,断路器就
将ps流解析为es流,功能比较简单,大致实现了上述功能
Elasticsearch技术解析与实战+Elasticsearch权威指南两本电子书,合集共享,让你早日学习了解Elasticsearch