带你读《Elastic Stack 实战手册》之83:——4.3.2.Elasticsearch 开发人员最佳实践指南(3)

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 带你读《Elastic Stack 实战手册》之83:——4.3.2.Elasticsearch 开发人员最佳实践指南(3)

《Elastic Stack 实战手册》——四、应用实践——4.3 性能优化场景——4.3.2.Elasticsearch 开发人员最佳实践指南(2): https://developer.aliyun.com/article/1225222spm=a2c6h.13148508.setting.15.438f4f0e18NXNE


实战技巧(Strategy)

在最后一节中,我收集了解决上述未解决问题的便捷的实战技巧。

始终(尝试)坚持使用最新的 JVM 和 Elasticsearch 版本

Elasticsearch 是一个 Java 应用程序。像其他所有 Java 应用程序一样,它也有 hot paths

和垃圾回收问题。几乎每个新的 JVM 版本都会带来很多优化,你可以不费吹灰之力利用这些

优化。

Elasticsearch 有一个官方页面,列出了支持的 JVM 版本和垃圾收集器。在尝试任何 JVM 升

级之前,请务必先翻一翻如下文章清单:

·  https://www.elastic.co/guide/en/elasticsearch/guide/current/_don_8217_t_touch_thes

e_settings.html

·  https://www.elastic.co/cn/support/matrix#matrix_jvm


注意:Elasticsearch 升级也是免费获得性能提升的来源。

使用 Elasticsearch 完整和部分快照进行备份


Elasticsearch 可以便捷的实现全部索引的全量快照,或者部分索引数据的增量快照。

根据你的更新模式和索引大小,找到适合你的用例的快照最佳组合。


也就是说,例如,在 00:00 时有 1 个完整快照,在 06:00、12:00 和 18:00 时有 3 个 局部

增量快照。将它们存储在第三方存储也是一种好习惯。


有一些第三方 插件 可以简化这些情况。


举例:https://www.elastic.co/guide/en/elasticsearch/plugins/master/repository.html

与每份备份方案一样,安全起见,请确保快照可以还原并反复练习几次。


有一个持续的性能测试平台


像任何其他数据库一样,Elasticsearch 在不同条件下显示不同的性能:

·  索引,文档大小;

·  更新,查询/检索模式;

·  索引,集群设置;

·  硬件,操作系统,JVM 版本等。

很难跟踪每个设置的改变以观察其对整体性能的影响。确保你(至少)进行每日性能测试,以

帮助缩小范围,快速定位最近引入的、导致性能下降的可能的原因。

这种性能测试说起来容易做起来难。你需要确保测试环境:


·  能有代表性的生产环境数据

·   配置和生产环境一致

·  完全覆盖用例

·  考虑包括操作系统缓存的测试的影响。

使用别名

告诉你一些颇有见地的实操经验:永远不要查询索引,而要查询别名。


别名是指向实际索引的指针。你可以将一个或多个索引归为一个别名。


许多 Elasticsearch 索引在索引名称上都有内部上下文,例如 events-20190515 代表 201905

15 这一天的数据。


现在,在查询 events-* 索引时,应用程序代码中有两个选择:

选择 1:通过特定日期格式即时确定索引名称:events-YYYYMMDD。

这种方法有两个主要缺点:

1)需要回退到特定日期的索引,因此需要对整个代码库进行相应的设计以支持这种操作。

2)撇开所有时钟同步问题,在凌晨,你需要用程序或者脚本控制索引切换,确保数据写入下一

天索引。

选择 2:创建一个 events 别名,指向 events-* 相关的索引。负责创建新索引的组件如:

curator 或者 ILM(索引生命周期管理)可以自动将别名切换到新索引。

这种方法将带来两个明显的好处:

1)它没有以前方法的缺点。

2)只需指向 events 别名,代码就会更简洁。


避免拥有大量同义词


Elasticsearch 支持索引阶段和查询阶段指定 同义词。


没有同义词,搜索引擎是不完整的,但实战使用环境,注意如下问题:


·索引阶段同义词增加了索引大小,并增加了运行时开销。

·查询阶段同义词不会增加索引的大小,但顾名思义,这会增加运行时开销。

·使用同义词,很容易在尝试修复其他问题时无意间破坏某些其他内容。


所以,要持续监视同义词对性能的影响,并尝试为添加的每个同义词编写测试用例。


同义词官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis

-synonym-tokenfilter.html


《Elastic Stack 实战手册》——四、应用实践——4.3 性能优化场景——4.3.2.Elasticsearch 开发人员最佳实践指南(4): https://developer.aliyun.com/article/1225219?spm=a2c6h.13148508.setting.17.438f4f0e18NXNE

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
12月前
|
消息中间件 缓存 JSON
带你读《Elastic Stack 实战手册》之83:——4.3.2.Elasticsearch 开发人员最佳实践指南(2)
带你读《Elastic Stack 实战手册》之83:——4.3.2.Elasticsearch 开发人员最佳实践指南(2)
114 0
|
12月前
|
监控 Java 大数据
带你读《Elastic Stack 实战手册》之83:——4.3.2.Elasticsearch 开发人员最佳实践指南(4)
带你读《Elastic Stack 实战手册》之83:——4.3.2.Elasticsearch 开发人员最佳实践指南(4)
|
12月前
|
存储 缓存 自然语言处理
带你读《Elastic Stack 实战手册》之83:——4.3.2.Elasticsearch 开发人员最佳实践指南(1)
带你读《Elastic Stack 实战手册》之83:——4.3.2.Elasticsearch 开发人员最佳实践指南(1)
108 0
|
12月前
|
数据采集 存储 运维
带你读《Elastic Stack 实战手册》之73:——4.1.5.Elasticsearch在搜索引擎构建中的实践 (下)
带你读《Elastic Stack 实战手册》之73:——4.1.5.Elasticsearch在搜索引擎构建中的实践 (下)
|
12月前
|
存储 运维 监控
带你读《Elastic Stack 实战手册》之73:——4.1.5.Elasticsearch在搜索引擎构建中的实践 (上)
带你读《Elastic Stack 实战手册》之73:——4.1.5.Elasticsearch在搜索引擎构建中的实践 (上)
|
12月前
|
应用服务中间件 开发工具 nginx
带你读《Elastic Stack 实战手册》之41:——3.4.3.Kibana基础应用(8)
带你读《Elastic Stack 实战手册》之41:——3.4.3.Kibana基础应用(8)
106 0
|
12月前
|
JSON 数据格式 索引
带你读《Elastic Stack 实战手册》之41:——3.4.3.Kibana基础应用(5)
带你读《Elastic Stack 实战手册》之41:——3.4.3.Kibana基础应用(5)
|
12月前
|
数据可视化 索引
带你读《Elastic Stack 实战手册》之41:——3.4.3.Kibana基础应用(12)
带你读《Elastic Stack 实战手册》之41:——3.4.3.Kibana基础应用(12)
|
12月前
|
运维 Prometheus Kubernetes
带你读《Elastic Stack 实战手册》之41:——3.4.3.Kibana基础应用(13)
带你读《Elastic Stack 实战手册》之41:——3.4.3.Kibana基础应用(13)
|
12月前
|
存储 数据可视化
带你读《Elastic Stack 实战手册》之41:——3.4.3.Kibana基础应用(11)
带你读《Elastic Stack 实战手册》之41:——3.4.3.Kibana基础应用(11)

相关产品

  • 检索分析服务 Elasticsearch版