
【Elasticsearch 技术分享】—— Elasticsearch ?倒排索引?这都是什么?
发布日期:2021-05-19 03:30:31
浏览次数:17
分类:博客文章
本文共 1419 字,大约阅读时间需要 4 分钟。
前言
革命同志是块砖,哪里需要哪里搬!这不,老大发话,要我在组内做一个 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 是干嘛的。后续再慢慢看、慢慢总结。
发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2025年04月27日 16时30分13秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
html游戏玩不了,WinXP网页游戏玩不了怎么办有哪些解决方法
2023-01-24
html转jsp_JSP详解
2023-01-24
iphone打字怎么换行_手持iPhone?你可能并不知道的小技巧!
2023-01-24
jaccard相似度_自然语言处理之文本相似度计算
2023-01-24
java 8 list对象属性判空_java ---- 认识类对象,属性和方法
2023-01-24
java http delete_java积累---HttpDelete请求方式传递参数
2023-01-24
java swing数据库,如何在Java swing中查看数据库结果集
2023-01-24
java xmpp 群聊,使用XMPPFramework openfire创建聊天室
2023-01-24
java 反义_java中一些常用的英语
2023-01-24
java 命令行 class_如何从命令行执行java .class
2023-01-24
java 字符编码过滤器_java web中字符编码的过滤器(Filter - 1)
2023-01-24
java 线程 栈_Java线程堆栈分析
2023-01-24
#NOIP前数学知识总结
2023-01-24
java书籍_还搞不定Java多线程和并发编程面试题?你可能需要这一份书单!
2023-01-24
java序列化_java对象的序列化和反序列化
2023-01-24
java开发区块链_用Java代码实现区块链
2023-01-24
java快捷键eclipse_eclipse的设置和一些快捷键
2023-01-24