Java架构师-分布式(三):分布式搜索引擎-Elasticsearch【倒排索引;从其他数据库同步数据】
一、Elasticsearch 概述
Elasticsearch 是一个分布式的免费开源搜索和分析引擎,适用于包括文本、数字、地理空间、结构化和非结构化数据等在内的所有类型的数据。Elasticsearch 在 Apache Lucene 的基础上开发而成,由 Elasticsearch N.V.(即现在的 Elastic)于 2010 年首次发布。Elasticsearch 以其简单的 REST 风格 API、分布式特性、速度和可扩展性而闻名,是 Elastic Stack 的核心组件;Elastic Stack 是一套适用于数据采集、扩充、存储、分析和可视化的免费开源工具。人们通常将 Elastic Stack 称为 ELK Stack(代指 Elasticsearch、Logstash 和 Kibana),目前 Elastic Stack 包括一系列丰富的轻量型数据采集代理,这些代理统称为 Beats,可用来向 Elasticsearch 发送数据。
1、Elasticsearch 的用途是什么?
Elasticsearch 在速度和可扩展性方面都表现出色,而且还能够索引多种类型的内容,这意味着其可用于多种用例:
- 应用程序搜索
- 网站搜索
- 企业搜索
- 日志处理和分析
- 基础设施指标和容器监测
- 应用程序性能监测
- 地理空间数据分析和可视化
- 安全分析
- 业务分析
2、Elasticsearch 的工作原理是什么?
原始数据会从多个来源(包括日志、系统指标和网络应用程序)输入到 Elasticsearch 中。数据采集指在 Elasticsearch 中进行索引之前解析、标准化并充实这些原始数据的过程。这些数据在 Elasticsearch 中索引完成之后,用户便可针对他们的数据运行复杂的查询,并使用聚合来检索自身数据的复杂汇总。在 Kibana 中,用户可以基于自己的数据创建强大的可视化,分享仪表板,并对 Elastic Stack 进行管理。
3、Elasticsearch 索引是什么?
Elasticsearch 索引指相互关联的文档集合。Elasticsearch 会以 JSON 文档的形式存储数据。每个文档都会在一组键(字段或属性的名称)和它们对应的值(字符串、数字、布尔值、日期、数值组、地理位置或其他类型的数据)之间建立联系。
Elasticsearch 使用的是一种名为倒排索引的数据结构,这一结构的设计可以允许十分快速地进行全文本搜索。倒排索引会列出在所有文档中出现的每个特有词汇,并且可以找到包含每个词汇的全部文档。
在索引过程中,Elasticsearch 会存储文档并构建倒排索引,这样用户便可以近实时地对文档数据进行搜索。索引过程是在索引 API 中启动的,通过此 API 您既可向特定索引中添加 JSON 文档,也可更改特定索引中的 JSON 文档。
4、Logstash 的用途是什么?
Logstash 是 Elastic Stack 的核心产品之一,可用来对数据进行聚合和处理,并将数据发送到 Elasticsearch。Logstash 是一个开源的服务器端数据处理管道,允许您在将数据索引到 Elasticsearch 之前同时从多个来源采集数据,并对数据进行充实和转换。
5、Kibana 的用途是什么?
Kibana 是一款适用于 Elasticsearch 的数据可视化和管理工具,可以提供实时的直方图、线形图、饼状图和地图。Kibana 同时还包括诸如 Canvas 和 Elastic Maps 等高级应用程序;Canvas 允许用户基于自身数据创建定制的动态信息图表,而 Elastic Maps 则可用来对地理空间数据进行可视化。
6、为何使用 Elasticsearch?
Elasticsearch 很快。由于 Elasticsearch 是在 Lucene 基础上构建而成的,所以在全文本搜索方面表现十分出色。Elasticsearch 同时还是一个近实时的搜索平台,这意味着从文档索引操作到文档变为可搜索状态之间的延时很短,一般只有一秒。因此,Elasticsearch 非常适用于对时间有严苛要求的用例,例如安全分析和基础设施监测。
Elasticsearch 具有分布式的本质特征。Elasticsearch 中存储的文档分布在不同的容器中,这些容器称为分片,可以进行复制以提供数据冗余副本,以防发生硬件故障。Elasticsearch 的分布式特性使得它可以扩展至数百台(甚至数千台)服务器,并处理 PB 量级的数据。
Elasticsearch 包含一系列广泛的功能。除了速度、可扩展性和弹性等优势以外,Elasticsearch 还有大量强大的内置功能(例如数据汇总和索引生命周期管理),可以方便用户更加高效地存储和搜索数据。
Elastic Stack 简化了数据采集、可视化和报告过程。通过与 Beats 和 Logstash 进行集成,用户能够在向 Elasticsearch 中索引数据之前轻松地处理数据。同时,Kibana 不仅可针对 Elasticsearch 数据提供实时可视化,同时还提供 UI 以便用户快速访问应用程序性能监测 (APM)、日志和基础设施指标等数据。
二、Elasticsearch 核心术语
三、Elasticsearch 集群架构原理
四、倒排索引
五、安装 elasticsearch
六、安装可视化插件:ES-header插件【chrome插件】
七、ES-header与Postman基于索引的基本操作
1、mappings自定义创建映射
2、mappings新增数据类型与analyze
3、文档的基本操作
添加文档与自动映射
删除与修改
4、文档乐观锁控制 if_seq_no与if_primary_term
5、分词与内置分词器
6、建立ik中文分词器
7、自定义中文词库
8、dsl搜索
数据准备
入门语法
查询所
term与match
match_phr
match(operator)与ids
multi_match与boost
布尔查
过滤器
排序
高亮hig
9、深度分页
10、滚动搜索
11、批量查询
_mget
bulk 之 create
bulk 之 ind
bulk 之
八、Elasticsearch集群
5-3,5-4 搭建elasticsearch集群
5-5 elasticsearch集群分片
5-6 elasticsearch集群节点宕机测试
5-7,5-8 elasticsearch集群脑裂现象探讨
5-9 elasticsearch集群的文档读写原理
九、Elasticsearch整合SpringBoot
十、Logstatsh数据同步【从Mysql】
Logstash是elastic技术栈中的一个技术。它是一个数据采集引擎,可以从数据库采集数据到es中。我们可以通过设置自增id主键或者时间来控制数据的自动同步时间就是用于给logstash进行识别的
- id:假设现在有1000条数据,Logstatsh识别后会进行一次同步,同步完会记录这个id为1000,以后数据库新增数据,那么id会一直累加h会有定时任务,发现有id大于1000了,则增量加入到es中
- 时间:同理,一开始同步1000条数据,每条数据都有一个字段,为time,初次同步完毕后,记录这个time,下次同步的时候进行时间比超过这个时间的,那么就可以做同步,这里可以同步新增数据,或者修改元数据,因为同一条数据的时间更改会被识别,而id则不会。
1、 Logstash介绍
2、 数据同步配置
3、 测试数据新增与修改
4、 自定义模板配置中文分词
十一、Elasticsearch整合Web项目
1、初始化web环境
2、创建controller与service-
3、实现商品分页搜索与高亮
4、前后端联调
5、前端自定义高亮样式
6、实现商品搜索排序
参考资料:
Elasticsearc讲义稿件1.md
相关文章
- 【java】基于MVC三层架构中的数据库增/删/改/查通用Dao类的操作(示例+源码+注释)
- Java中的BigInteger
- 22 年最全面试java八股文合集
- 面试复盘 常见面试题 正则表达式 验证邮箱 Java 1-100万整数全部随机生成不重复 遍历一个文件夹下所有的文件和子文件 数据库查询班级最高分 创建一个学生表,记录学生父母名字
- 用Java构建一个简单的WebSocket聊天室
- 用Java连接SQL Server2000数据库的两种方法与jDTS
- XML文档形式&JAVA抽象类和接口的区别&拦截器过滤器区别
- java UDP传输
- java从数据库查询数据存在redis中
- java 高效批量插入 sqlserver 数据库
- 「Java数据结构」:手撕二维数组和稀疏数组相互转换。
- java类加载时机与过程
- 【华为OD机试真题 java、python、c++】优秀学员统计【2022 Q4 100分】(100%通过)
- java map的四种遍历
- 【转】Java学习---HashMap和HashSet的内部工作机制
- java(2014)实现对mysql数据库分页的代码
- Amoeba是一个类似MySQL Proxy的分布式数据库中间代理层软件,是由陈思儒开发的一个开源的java项目
- 使用JAVA中的动态代理实现数据库连接池
- Java高手速成│Java程序怎样和数据库对话
- Java使用JDBC连接随意类型数据库(mysql oracle。。)
- Java模式设计之单例模式
- 三国武将查询系统 //Java 訪问 数据库
- Java实现二分查找算法
- Java开发 - 数据库中的基本数据结构
- Java高手技能树:看了大汗淋漓
- Java 包(package)
- 色即是空,空即是色---java有关null的几件小事
- java操作数据库出错
- java学习之路(1)