前言
反动同志是块砖,哪里须要哪里搬!这不,老大发话,要我在组内做一个 Elasticsearch 技术分享。这不话题一转,开始看起来 ES 了。尽管很久之前用过 ELK 做过日志监控零碎,然而毕竟时隔已久,还是得从头看起。当然手头的活也不能停,话不多说,开始分享。先看看什么是 ES?
公众号:『刘志航』,记录工作学习中的技术、开发及源码笔记;时不时分享一些生存中的见闻感悟。欢送大佬来领导!
什么是 ES
Elasticsearch 是分布式搜寻和剖析引擎。
Elasticsearch 为所有类型的数据提供 近实时(near real-time)的搜寻和剖析。
罕用场景:
- 网站搜寻
- ELK 日志采集,存储,剖析
- 地理信息系统剖析
像下图中应用的设计:
特点:
- ES 是一个分布式文档存储,存储的数据都是序列化为 JSON documents。
- 应用 倒排索引 存储数据,倒排索引比拟适宜全文本搜寻。
- 基于 Apache Lucene 搜索引擎库,能够存储,检索文档及元数据。
- 反对 JSON 款式的查询语言——Query DSL,也反对 SQL 款式的查问。
-
集群部署,易于扩大。节点(node)分片(shard),将新的 node 增加到集群时,ES 会主动迁徙 shard 到新 node 上,从新均衡集群。
- shard 分为两种 主分片(primary shard)和 正本分片(replica shard)
- replica shard 寄存的是 primary shard 的冗余正本 —— 能够避免集群故障,数据失落,同时能够进步搜寻或检索速度。
- 在创立索引时 primary shard 数量是固定的,而 replica shard 数量是能够更改的。
- 分片由索引配置,分片越多,保护索引则开销则越大,分片大小越大,则 ES 在增减节点从新均衡集群时,分片挪动工夫越长。
- 集群复原:跨集群复制(CCR),能够主动将索引从主集群同步到热备份的辅助近程集群。
什么是倒排索引?
倒排索引也能够成为反向索引。
作为开发咱们常常接触到的就是 MySql,假如有一堆技术书籍,并且曾经编上号。
- Java 并发编程之美
- Java 开发手册
- 深刻分布式缓存
- Java 并发程序设计
- 算法
- 数据结构与算法
- 如果放在 MySql 外面就是这样
id | book_name |
---|---|
1 | Java 并发编程之美 |
2 | Java 开发手册 |
3 | 深刻分布式缓存 |
4 | Java 并发程序设计 |
5 | 算法 |
6 | 数据结构与算法 |
此时我想查问所有对于 并发 的书籍。
select * from table_book where book_name like % 并发 %;
而后会开始遍历表格,查找到 1 和 4 两条记录。
- 如果是倒排索引解决的话
首先会将每个名称进行分词,比方 Java 并发编程之美
会被分为 Java
并发
编程
之
美
。
分词完结之后依照词关联书籍的编号。
term | ids |
---|---|
Java | 1、2、4 |
并发 | 1、4 |
编程 | 1 |
算法 | 5、6 |
分布式 | 3 |
… | … |
在倒排索引中搜寻 并发 ,而后进行检索,就很容易定位到对于 并发 书籍的编号。
那什么是 Lucene?
Lucene 能够了解为一个开源的、高性能、可伸缩的信息搜寻库。应用 Java 开发,封装了各种倒排索引和搜寻的 API。相当于一个组件。
而 ES 就是在 Lucene 之上进行的开发,从而能够 高可用 、 集群部署 、 故障迁徙 、 备份容灾 等。
总结
就这么多,先晓得个 ES 是干嘛的。后续再缓缓看、缓缓总结。