ElasticSearch Tune for search speed Translation

  • 时间:
  • 浏览:1

12.使用索引排序加快连接速度

将只读索引合并到单个分片中会更好,一些情况报告在时间索引中尤为明显,不可能 只有当前时间的索引才会只有写入,过时的索引只只有只读情况报告。

当发生多个副本分片时,es会使用一组称为自适应副本选则的标准,根据中有 每个分片副本的节点的响应时间,服务时间和队列大小来选则最佳数据副本。这只有提高查询吞吐量并减少搜索量大的守护线程池池的延迟

你应该使用查询模式优化数据索引法律措施。你这人,不可能 所有文档全部一定会price字段,倘若大多数查询一定会使用固定的price 范围查询,这样亲们只有那我将该范围映射到索引中来加快聚合此字段,看下面例子:

亲们也只有使用更大和更小的范围来四舍五入从而提高查询缓存速度

不可能 索引速度受到I/O制约,你只有提供为文件系统缓存提供更多的内存不可能 升级加快速度的硬件设备。一般固态比机械硬盘性能更好。始终使用本地文件系统,远程文件系统像NFS以及SMB都应该避免。对你这人亚马逊的EBS(elastic block storage)也要留意,es在虚拟存储上表现更好,不可能 加快速度以及易于安装使得它变得这样受欢迎。倘若不幸的是相比于本地存储虚拟存储还是有一些差距。不可能 我我愿意 使用EBS请注意要使用提供的IOPS倘若会被限流。

使用前:

尤其是joins操作应该尽量避免,而嵌套(nested)会降低几倍查询速度,而父子关系(parent-child relations)查询更会使得查询以数百倍的速度下降。全都 不可能 只有使用不规范的文档而全部一定会使用joins也能达到同样的效果,尽量使用有有哪些来提高速度

13.使用preference来优化缓存使用率

不可能 索引速度受到CPU制约,你只有购买加快速度的CPU

索引排序会牺牲较少的索引速度来加快连接速度

4.尽量使用更少的字段

不可能 对于用户来说有有另有有五个 接有有另有有五个 发送相同请求是很普遍的,全都 为了分析索引的较窄子集,使用标识当前用户或会话的偏好值只有帮助优化高速缓存的使用

在一些案例中亲们四舍五入到分钟,不可能 当前时间是16:31:29,一些查询会查询

es严重依赖文件系统缓存来提高搜索速度。通常,为了使es将搜索保持在物理内存的热区域中,只有确保最少一般的可用内存提供给文件系统缓存

使用now作为日期范围查询一般太少再被缓存这是不可能 now一直在变化。然而就用户体验而言使用边界数据会更好,倘若还促进查询缓存。

8.搜索边界数据

1.给文件系统缓存提供更多的内存

使用后:

文档只有建模那让我够使得索引操作变得加快速度。

query_string和multi_match的字段太少,查询越慢。提高多字段查询速度中普遍使用的一项技术就是我将多个字段值拷贝到有有另有有五个 字段,查询的那我只只有查询一些字段即可。这只有使用映射中的copy_to 指令来做到倘若该指令太少再改变文档源,下面是有有另有有五个 例子

7.避免脚本

不可能 机器重启,文件系统缓存会被清空。这会由于操作系统加载索引到热区域那我话费一定的时间。让我通过index.store.preload配置指定有哪些被马上缓存到内存中

14.克隆只有帮助提高高吞吐倘若有条件的

事实上一些数值型字段太少再一定会被映射为数值型,es在term的数值型范围查询中使用关键字会更好。典型的,字段存储的你这人ISBN不可能 来自那我数据库的数值型标识符号会很少被用在范围查询或聚合中,这是不可能 将它们映射为关键字而全部一定会integer或long更好。

15.打开自适应副本选则

有有另有有五个 节点上分片越少也就原由于该分片分配的内存太少从而提高吞吐的能力,倘若这是以牺牲高可用为前提的,不可能 缺少了副本分片作为灾备。在这两者之间最好保持平衡,副本分片的最优数量一般是max(max_failures, ceil(num_nodes / num_primaries) - 1) max_failures:每次最多有太少节点去避免失败。具体见官网

注意:不可能 文件系统缓存不足以放入所有的索引数据,立马加载几滴 数据到文件系统缓存中会由于查询加快速度。

10.备份全球序数

有全都 只有提高查询性能的缓存,你这人文件系统缓存,请求缓存不可能 查询缓存。目前有有哪些缓存全部一定会节点级别的,这由于连续发送有有另有有五个 相同的请求,在有有另有有五个 或多个副本的情况报告下,使用round-robin分布式负载均衡策略以及默认的算法,这有有另有有五个 请求会被路由到不同的分片,这会由于节点级别的缓存无法起到作用。

全球序数是有有另有有五个 作为关键字段被用于terms聚合的数据形状。不可能 es太少再知道有哪些字段会被用于terms聚合以及有哪些字段太少再被用于terms聚合,全都 它们一般是被懒加载到内存中。这样让我使用es在刷新时间通过配置映射来指定某个属性是不是被es以全球序数的饥渴情况报告来加载

注意:对于只有写入的索引太少再将其合并,另外合并只有作为有有另有有五个 后台守护线程池池运行

使用后:

9.合并只读索引

倘若只有注意的是,一些情况报告下一些法律措施会适得其反,不可能 bool查询(在不同的时间分段中搜索)带来的开销不可能 会超过查询缓存带来的速度。

3.文档建模

通常情况报告下,脚本尽量避免使用,不得已时最好也要使用painless和expressions引擎

5.预索引数据

2.使用加快速度的硬件

使用前: