使用Elasticsearch的动态索引和索引优化

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 使用Elasticsearch的动态索引和索引优化

关于映射


实际工作中使用过ES的朋友可能会有和静儿一样的感受。ES存储更新从编码上是很方便。如下,Kubernetes的yaml文件完全可以通过json直接序列化一下,一行代码存入ES。


1112728-20190324141733063-1723088883.png


剩下的工作可以交给ES进行动态生成映射。索引映射的生成方式有两种:


动态映射


字段和映射类型不需要在使用前定义,新字段名可以自动被添加到索引。只需要更新索引,新字段可以被添加到顶层映射、内部对象或者嵌套字段。


显示的映射


动态的映射,字段类型定义靠的ES自己来猜。开发人员自己比ES更了解自己的索引字段。所以有时会需要明确的指定索引类型。指定索引可以在创建索引时指定,也可以使用PUT API来在已经存在的索引里添加。


使用模板创建索引


索引可使用预定义的模板进行创建,这个模板称作Index templates。模板设置包括settings和mappings,通过模式匹配的方式可以使得多个索引重用一个模板。


别名


说起来容易做起来难。调试中,需要反复的权衡和实践。发现索引的类型定义不合理,需要在ES平台上进行索引的字段类型修改。如果使用的是模板方式,修改模板后需要将索引删除后重建生效。如果只是想重命名一个字段而不修改映射,可以使用别名(alias)字段。

 

提高索引性能的一些建议


提高写入效率


1>使用批量请求并调整其大小


使用bulk api可以多线程并发创建,并将操作合并批量进行请求。批量的大小取决于数据、集群配置等。


2>根据日志对故障容忍,合理设置事务日志是同步还是异步


因为Translog顺序写日志比构建索引更高效。为了保证数据的完整性,ES默认每次请求结束都会进行一次sync同步操作。但是如果是海量的日志,可以容忍发生故障时丢失一定的数据,可以设成异步来提高写效率。设置参数是:index.translog.durability=async。


提高读取效率


1>根据实时性需求调整索引刷新频率


如果搜索结果不需要实时性很高,可以按需设置i索引刷新频率。设置参数是index.refresh_interval。在大批导入时间还可以通过设置此值为-1关掉刷新。


2>对索引进行合理分片


ES的分片分为两种,主分片(Primary Shard)和副本(Replicas)。分片越少写入速度越快。如果过度分配,会增大合并分片查询结果的复杂度,从而耗时增加。


3>如果不需要使用KEY之间的关系,使用展开提高效率


ES提供了为字段提供嵌套类型。嵌套类型因为包括着嵌套内字段的关系,效率低于将这些字段展平的效率。所以如果不需要使用KEY之间的关系,可以使用展开提高效率。

 

总结


<程序员修炼之道>不要做形式方法的奴隶


Don't Be a Slave to Formal Methods.


静儿解读:如果某项技术在开发时间和能力中作用不大,不要盲目的采用它,不要为了用而用。

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
1天前
|
存储 缓存 搜索推荐
深入理解Elasticsearch倒排索引原理与优化策略
总之,Elasticsearch的倒排索引是其高效全文搜索的核心。为了提高性能和可伸缩性,Elasticsearch采用了多种优化策略,包括压缩、分片、合并、位集合和近实时搜索等。这些策略使Elasticsearch成为处理大规模文本数据的强大工具。
7 0
|
3天前
|
运维 安全 API
Elasticsearch 悬挂索引解析与管理指南
Elasticsearch 悬挂索引解析与管理指南
20 7
|
3天前
|
安全 API 数据安全/隐私保护
Elasticsearch 通过索引阻塞实现数据保护深入解析
Elasticsearch 通过索引阻塞实现数据保护深入解析
18 4
|
3天前
|
存储 数据处理 索引
Elasticsearch 8.X 小技巧:使用存储脚本优化数据索引与转换过程
Elasticsearch 8.X 小技巧:使用存储脚本优化数据索引与转换过程
29 6
|
3天前
|
运维 索引
Elasticsearch 写入优化探索:是什么影响了refresh 耗时?
Elasticsearch 写入优化探索:是什么影响了refresh 耗时?
21 7
|
3天前
|
运维 测试技术 数据处理
Elasticsearch 优化查询中获取字段内容的方式,性能提升5倍!
Elasticsearch 优化查询中获取字段内容的方式,性能提升5倍!
14 0
|
3天前
|
监控 固态存储 安全
源码剖析:Elasticsearch 段合并调度及优化手段
源码剖析:Elasticsearch 段合并调度及优化手段
7 0
|
3天前
|
存储 数据库 索引
Elasticsearch ILM 索引生命周期管理常见坑及避坑指南
Elasticsearch ILM 索引生命周期管理常见坑及避坑指南
10 0
|
15天前
|
安全 API 数据安全/隐私保护
Elasticsearch 通过索引阻塞实现数据保护深入解析
Elasticsearch 通过索引阻塞实现数据保护深入解析
17 0
|
15天前
|
Java Maven 开发工具
【ElasticSearch 】IK 分词器安装
【ElasticSearch 】IK 分词器安装
23 1

热门文章

最新文章