前言革命同志是块砖,哪里须要哪里搬!这不,老大发话,要我在组内作一个 Elasticsearch 技术分享。这不话题一转,开始看起来 ES 了。虽然好久以前用过 ELK 作过日志监控系统,可是毕竟时隔已久,仍是得从头看起。固然手头的活也不能停,话很少说,开始分享。先看看什么是 ES?node
Elasticsearch 是分布式搜索和分析引擎。算法
Elasticsearch 为全部类型的数据提供近实时(near real-time)的搜索和分析。sql
经常使用场景:编程
像下图中使用的设计:缓存
特色:数据结构
集群部署,易于扩展。节点(node)分片(shard),将新的 node 添加到集群时,ES 会自动迁移 shard 到新 node 上,从新平衡集群。并发
倒排索引也能够成为反向索引。分布式
做为开发我们常常接触到的就是 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 | 一、二、4 |
并发 | 一、4 |
编程 | 1 |
算法 | 五、6 |
分布式 | 3 |
... | ... |
在倒排索引中搜索并发,而后进行检索,就很容易定位到关于并发书籍的编号。
Lucene 能够理解为一个开源的、高性能、可伸缩的信息搜索库。使用 Java 开发,封装了各类倒排索引和搜索的API。至关于一个组件。
而 ES 就是在 Lucene 之上进行的开发,从而能够高可用、集群部署、故障迁移、备份容灾等。
就这么多,先知道个 ES 是干吗的。后续再慢慢看、慢慢总结。