前言
" 革命同志是块砖,哪里需要哪里搬!这不,老大发话,要我在组内做一个 Elasticsearch 技术分享。这不话题一转,开始看起来 ES 了。虽然很久之前用过 ELK 做过日志监控系统,但是毕竟时隔已久,还是得从头看起。当然手头的活也不能停,话不多说,开始分享。先看看什么是 ES? "
1
什么是 ES ?
Elasticsearch 是分布式搜索和分析引擎。
Elasticsearch 为所有类型的数据提供近实时(near real-time)的搜索和分析。
常用场景:
像下图中使用的设计:
特点:
2
什么是倒排索引?
倒排索引也可以成为反向索引。
作为开发咱们经常接触到的就是 MySql,假设有一堆技术书籍,并且已经编上号。
- 如果放在 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 |
... | ... |
在倒排索引中搜索并发,然后进行检索,就很容易定位到关于并发书籍的编号。
3
那什么是 Lucene?
Lucene 可以理解为一个开源的、高性能、可伸缩的信息搜索库。使用 Java 开发,封装了各种倒排索引和搜索的API。相当于一个组件。
而 ES 就是在 Lucene 之上进行的开发,从而可以高可用、集群部署、故障迁移、备份容灾等。
4
总结
就这么多,先知道个 ES 是干嘛的。后续再慢慢看、慢慢总结。
相关文档
[1] ES:
https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html
- <End /> -
历史文章 | 相关推荐
使用 Maven Archetype 创建项目模版
使用雪花算法生成流水号!
作者:刘志航,一个宅宅的北漂程序员。