唯's Blog

笔者是一个热爱编程的 Java 程序员。

0%

ES原理

ES 原理

ES全称ElasticSearch,是一个分布式搜索引擎,同时也是一个Nosql数据库,存放的数据格式类似JSON,跟MongoDB有些类似,
MongoDB事务型应用层面适用于OLTP,ElasticSearch更偏向于OLAP,本身不支持事务。

实现特点

  1. 存储数据有序存储
  2. 将数据与索引分离
  3. 压缩数据

主要解决问题

  1. 检索相关数据
  2. 分布式存储
  3. 返回统计结果
  4. 速度快

读写底层原理

协调节点

负责读写请求的路由,例如查询的文档不在当前机器上,则需要路由到其他 ES 机器上。

四个核心操作

  1. flush
  2. refresh
  3. translog
  4. merge

海量数据下 ES 的性能优化

  1. 系统文件缓存(File System Cache),保证写入的数据量等于或者略大于系统内存(剩余)

  2. 避免在 ES 联表查询,写入 ES 时,应该就聚合数据。

  3. 只存储与搜索相关的字段,减少文档大小

  4. 冷热数据

  5. 深分页,改为使用 Scroll

  6. 存储数据有序存储

  7. 将数据与索引分离

  8. 压缩数据

主要解决问题

  1. 检索相关数据

  2. 分布式存储

  3. 返回统计结果

  4. 速度快