Elasticsearch性能优化指南(十一)

数据预热假如说,哪怕是你就按照上述的方案去做了,es 集群中每个机器写入的数据量还是超过了 filesystem cache 一倍,比如说你写入一台机器 60G 数据,结果 filesystem cache 就 30G,还是有 30G 数据留在了磁盘上。其实可以做数据预热。举个例子,拿微博来说,你可以把一些大V,平时看的人很多的数据,你自己提前后台搞个系统,每隔一会儿,自己的后台系统去搜索一下热数据,刷到 filesystem cache 里去,后面用户实际上来看这个热数据的时候,他们就是直接从内存里搜索了,很快。或者是电商,你可以将平时查看最多的一些商品,比如说 iphone 8,热数据提前后台搞个程序,每隔 1 分钟自己主动访问一次,刷到 filesystem cache 里去。对于那些你觉得比较热的、经常会有人访问的数据,最好做一个专门的缓存预热子系统,就是对热数据每隔一段时间,就提前访问一下,让数据进入 filesyst......阅读全文

Elasticsearch性能优化指南(十二)

使用Profile API调整查询您还可以使用Profile API分析查询和聚合每个部分的成本。这可能使您可以调整查询花费更少成本,从而获得正面的性能结果并减少负载。另请注意,可以在Search Profiler中轻松查看Profile API负载以提高可读性,Search Profile

Elasticsearch性能优化指南(九)

优化日期搜索在使用日期范围检索时,使用now的查询通常不能缓存,因为匹配到的范围一直在变化。但是,从用户体验的角度来看,切换到一个完整的日期通常是可以接受的,这样可以更好地利用查询缓存。curl -X GET "localhost:9200/index/_search?pretty" -H 'C

Elasticsearch性能优化指南(五)

将静态相关性信号纳入评分许多域具有已知的与相关性相关的静态信号。例如,PageRank和URL长度是Web搜索的两个常用功能,以便独立于查询来调整网页的分数。有两个主要查询,可以将静态分数贡献与文本相关性结合起来,例如。用BM25计算得出: - script_score query - rank_f

Elasticsearch性能优化指南(三)

es 第一是准实时的,数据写入 1 秒后可以搜索到;可能会丢失数据的。有 5 秒的数据,停留在 buffer、translog os cache、segment file os cache 中,而不在磁盘上,此时如果宕机,会导致 5 秒的数据丢失。总结一下,数据先写入内存 buffer,然后每隔

Elasticsearch性能优化指南(七)

自动生成id为具有显式ID的文档建立索引时,Elasticsearch需要检查具有相同ID的文档是否已存在于同一分片中,这是一项昂贵的操作,并且随着索引的增长而变得更加昂贵。通过使用自动生成的ID,Elasticsearch可以跳过此检查,这使索引编制更快。优化节点间的任务分布,将任务尽量均匀地发到

Elasticsearch性能优化指南(十三)

不要使用默认的动态字符串映射默认的动态字符串mappings会将字符串字段索引为文本和关键字。如果您只需要其中之一,则很浪费。通常,id字段仅需要索引为 keyword,而body字段仅需要索引为 text 字段。可以通过在字符串字段上配置显式映射或设置将字符串字段映射为text 或keyword的

Elasticsearch性能优化指南(十四)

出现此拐点的分片数量取决于多种因素,包括:可用的硬件分片负载数据量针对集群执行的查询的类型这些查询的发出率正在查询的数据量在生产环境硬件上,针对生产数据进行测试是校准最佳分片大小的唯一方法。通常使用数十GB的分片大小,这可能是进行实验的有用起点。当评估不同分片大小的影响时,Kibana的Elasti

Elasticsearch性能优化指南(十)

使用近似聚合近似聚合以牺牲少量的精确度为代价,大幅提高了执行效率,降低了内存使用。近似聚合的使用方式可以参考官方手册深度优化还是广度优先ES有两种不同的聚合方式:深度优先和广度优先。深度优先是默认设置,先构建完整的树,然后修剪无用节点。大多数情况下深度聚合都能正常工作,但是有些特殊的场景更适合广度优

Elasticsearch性能优化指南(二)

写数据底层原理先写入内存 buffer,在 buffer 里的时候数据是搜索不到的;同时将数据写入 translog 日志文件。如果 buffer 快满了,或者到一定时间,就会将内存 buffer 数据 refresh 到一个新的 segment file 中,但是此时数据不是直接进入 se

Elasticsearch性能优化指南(一)

先了解相关读写原理es 写数据过程客户端选择一个 node 发送请求过去,这个 node 就是 coordinating node (协调节点)。coordinating node 对 document 进行路由,将请求转发给对应的 node(有 primary shard)。实际的 node 上的

Elasticsearch性能优化指南(六)

升级硬件如果索引是受I / O约束的,则应研究为文件系统高速缓存提供更多内存(请参见上文)或购买速度更快的驱动器。特别是,已知SSD驱动器的性能要比旋转磁盘好。始终使用本地存储,应避免使用NFS或SMB等远程文件系统。还请注意虚拟存储,例如Amazon的Elastic Block S

Elasticsearch性能优化指南(八)

索引buffer大小调整如果您的节点仅执行大量的索引任务,请确保index.memory.index_buffer_size足够大,以使每个分片在进行大量的索引时最多提供512 MB索引缓冲区(此后加大,索引性能通常不会提高)。Elasticsearch接受该设置(占Java堆的百分比或绝对

Elasticsearch性能优化指南(十一)

数据预热假如说,哪怕是你就按照上述的方案去做了,es 集群中每个机器写入的数据量还是超过了 filesystem cache 一倍,比如说你写入一台机器 60G 数据,结果 filesystem cache 就 30G,还是有 30G 数据留在了磁盘上。其实可以做数据预热。举个例子,拿微博来说,你可

Elasticsearch性能优化指南(四)

秘密诀窍混合精确搜索和提取词干在构建搜索应用程序时,通常必须使用词干,比如对于“skiing”的查询需要匹配包含“ ski”或“ skis”的文档。但是,如果用户想专门搜索“skiing”怎么办?执行此操作的典型方法是使用 multi-field,以便以两种不同的方式对相同的内容建立索引:c