文档章节

ElasticSearch工作原理及使用建议

selfless
 selfless
发布于 2017/02/12 16:29
字数 541
阅读 70
收藏 1

准实时索引的实现

如果对mysql的innodb有了解的话,es的实现原理相似

  1. client只能搜索到commit point指向的segment
  2. 写入到memory buffer和translog之后,即写入成功
  3. memory buffer中的内容,每隔1s(可以通过/_refresh控制),异步刷新到磁盘
  4. 刷新到磁盘后,flush掉translog
  5. 很过个segment由单独merge线程处理segment的merge操作

上图:

ES准实时的实现

routing和replica

  1. 每个对象都有routing字段,默认是_id值
计算对象所在的shard通过以下方式:
shard = hash(routing) % number_of_primary_shards
所以创建索引,指定的分片数不能变,一旦变化,所有的索引数据都会读取失败
  1. replica一致性
默认写完一半以上即为成功。
int((primary + number_of_replicas) / 2) + 1
也可以设置为one或者all

如何提升写入性能

参见:https://www.elastic.co/guide/en/elasticsearch/reference/current/tune-for-indexing-speed.html

  1. 使用bulk request
  2. 使用多线程发送数据
  3. 增加refresh interval
  4. 在批量数据加载初始化的时候,可以关闭refresh
  5. 禁用交换空间
  6. 给文件系统较大的memory
  7. 使用自生成的id
  8. 使用更高效的硬件,例如:SSD
  9. 如果索引比较大,调大indices.memory.index_buffer_size

如何提升读取性能

参见:https://www.elastic.co/guide/en/elasticsearch/reference/current/tune-for-search-speed.html

  1. 给文件系统缓存更大的内存
  2. 使用更高效的硬件,例如:SSD
  3. 优化查询条件:避免join操作、nested操作和parent-child关系
  4. 数据预处理
  5. 一些情况下mapping使用keyword而不是integer或者long
  6. 强制merge read-only索引
  7. 文件系统缓存预热

如何减少磁盘使用空间

参见:https://www.elastic.co/guide/en/elasticsearch/reference/current/tune-for-disk-usage.html

  1. 禁用不必要的feature
  2. 不要使用默认的string mapping
  3. 禁用_all
  4. 使用best_compression

其他建议

参见:https://www.elastic.co/guide/en/elasticsearch/reference/current/general-recommendations.html

  1. 避免返回大的结果集,使用scroll代替
  2. 避免索引大文档,默认最大是100MB,(http.max_context_length)
  3. 避免在同一个索引下加入不相关的数据
  4. 避免过多的types,使用单独的index代替

© 著作权归作者所有

共有 人打赏支持
selfless
粉丝 24
博文 26
码字总数 21597
作品 0
海淀
程序员
私信 提问
死磕 Elasticsearch 方法论:普通程序员高效精进的 10 大狠招!

开篇 人工智能、大数据快速发展的今天,对于 TB 甚至 PB 级大数据的快速检索已然成为刚需。Elasticsearch 作为开源领域的后起之秀,从2010年至今得到飞跃式的发展。 Elasticsearch 以其开源、...

浮躁的码农
2018/12/18
0
0
死磕 Elasticsearch 方法论序篇:普通程序员高效精进的 10 大狠招!|MVP讲堂

作者:阿里云MVP 铭毅 开篇 人工智能、大数据快速发展的今天,对于 TB 甚至 PB 级大数据的快速检索已然成为刚需。Elasticsearch 作为开源领域的后起之秀,从2010年至今得到飞跃式的发展。 El...

辰悠
2018/12/14
0
0
当ES赶超Redis,这份ES进修攻略不容错过!

从4月DB-Engines最新发布的全球数据库排名中,我们赫然发现ElasticSearch逆袭超越了Redis,从原先的第9名上升至第8名,而Redis则落后一名,排在了其后。 事实上,这场逆袭并不算太让人意外。...

DBAplus社群
2018/04/15
0
0
ElasticSearch+kibana+logstash集群部署

ELK原理与介绍   ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana , 它们都是开源软件。新增了一个FileBeat,它是一个轻量级的日志收集处理工具(Agent),Filebeat占用...

若此生无缘
2018/08/22
0
0
基于ELK 搭建网站流量可视化监控平台

ELK 组成:: 通过上图我们可以看到,ELK 是由三个Elastic 的产品组合而成, 分别是ElasticSearch、Logstash 和Kibana。 三者之间是的部署关系如下图所示: 基本工作原理如下图所示: Logsta...

Java搬砖工程师
2018/12/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Linux syslog相关函数详解

介绍 syslog是Unix系统的日志系统。可以将日志记录在本地系统中。 一个完整的syslong日志包含如下信息:程序模块 | 严重性 | 时间 | 主机名 | 进程名 | 进程ID | 正文。 syslong相关函数 1....

RongJinhui0
17分钟前
0
0
使用nsenter工具进入Docker容器

查看本机装没有nsenter whereis nsenter或者whatis nsenter 未安装先安装,网上有很多这样的脚本 vi nsenter.sh#!/bin/bashcurl https://www.kernel.org/pub/linux/utils/util-linux/v2....

问题终结者
18分钟前
2
0
MaxCompute安全管理指南-基础篇

背景及目的 方便和辅助MaxCompute的project owner或安全管理员进行project的日常安全运维,保障数据安全。 MaxCompute有安全模型,DataWorks也有安全模型,当通过DataWorks使用MaxCompute,而...

阿里云云栖社区
19分钟前
1
0
Retrofit设计模式源码解析

因为Retrofit做到了很强的解耦,因此就一定需要用到很多设计模式。所以,我觉得,通过阅读Retrofit源码来学习设计模式是再好不过的设计模式学习方法了。 大致看了一圈Retrofit源码,受益匪浅...

亭子happy
19分钟前
4
0
哈夫曼编码

哈夫曼编码的基本思想是以字符的使用频率作为权构建一颗哈夫曼树,然后利用 哈夫曼树对字符进行编码 哈夫曼算法采用的贪心策略是每次从树的集合中取出没有双亲权值最小的两棵作为左右子树, ...

writeademo
21分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部