🚀 优质资源分享 🚀
学习路线指引(点击解锁) | 知识定位 | 人群定位 |
---|---|---|
🧡 Python实战微信订餐小程序 🧡 | 进阶级 | 本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。 |
💛Python量化交易实战💛 | 入门级 | 手把手带你打造一个易扩展、更安全、效率更高的量化交易系统 |
前言
ElasticSearch简称es,是一个开源的高扩展的分布式全文检索引擎。
它可以近乎实时的存储、检索数据,其扩展性很好,ElasticSearch是企业级应用中较为常见的技术。
下面和大家分享 ElasticSearch 集成在Spring Boot 项目的一些学习心得。
一、ElasticSearch概述
1.1基本认识
ElasticSearch 是基于 Lucene 实现的开源、分布式、RESTful接口的全文搜索引擎。
Elasticsearch 还是一个分布式文档数据库,其中每个字段均是被索引的数据且可被搜索,它能够扩展至数以百计的服务器存储以及处理PB级的数据。
Elasticsearch 可以通过简单的 RESTful 风格 API 来隐藏 Lucene 的复杂性,让搜索变得更加简单。
1.2核心概念
Elasticsearch 的核心概念是 Elasticsearch 搜索的过程,在搜索的过程中,Elasticsearch 的存储过程、数据结构都会有所涉及。
表1
关系型数据库 | Elasticsearch |
---|---|
数据库(DataBase) | 索引(indices) |
表(table) | types(已弃用) |
行(rows) | documents |
字段(columns) | fields |
注:
- Elasticsearch (集群)中可以包含多个indices(对应库),每个索引中可以包含多个types(对应表),每个types下面又包含多个documents(对应行记录),每个documents中又含有多个fields(对应字段)。
- Elasticsearch 中一切数据的格式都是 JSON。
Elasticsearch 中的索引是一个非常大的文档集合,存储了映射类型的字段和其它设置,被存储在各个分片上。
1.3倒排索引
Elasticsearch 使用一种名为倒排索引的结构进行搜索,一个索引由文档中所有不重复的列表构成,对于每一个词,都有一个包含它的文档列表。
传统数据库的搜索结构一般以id为主,可以一一对应数据库中的所有内容,即key-value的形式。
而倒排索引则与之相反,以内容为主,将所有不重复的内容记录按照匹配的程度(阈值)进行展示,即value-key的形式。
以下举两个例子来进行说明。
在关系型数据库中,数据是按照id的顺序进行约定的,记录的id具有唯一性,方便人们使用id去确定内容,如表2所示:
表2
id | label |
---|---|
1 | java |
2 | java |
3 | java,python |
4 | python |
在 ElasticSearch 中使用倒排索引:数据是按照不重复的内容进行约定的,不重复的内容具有唯一性,这样可以快速地找出符合内容的记录,再根据匹配的阈值去进行展示,如表3所示:
label | id |
---|---|
java | 1,2,3 |
python | 4,3 |
1.4了解ELK
ELK 是 ElasticSearch、Logstash、Kibana这三大开源框架首字母大写简称。
其中 Logstash 是中央数据流引擎,用于从不同目标(文件/数据存储/MQ)中收集不同的数据格式,经过过滤后支持输送到不同的目的地(文件/MQ/Redis/elasticsearch/kafka等)。
而 Kibana 可以将 ElasticSearch 的数据通过友好的可视化界面展示出来,且提供实时分析的功能。
ELK一般来说是一个日志分析架构技术栈的总称,但实际上 ELK 不仅仅适用于日志分析,它还可以支持任何其它数据分析和收集的场景,日志的分析和收集只是更具有代表性,并非 ELK 的唯一用途。
二、ElasticSearch(插件)安装
2.1安装声明
- 适用于JDK1.8及以上版本
- ElasticSearch客户端
- 界面工具
- ElasticSearch版本与Maven依赖版本对应
2.2 ElasticSearch下载
下载地址(7.6.1版本):https://www.elastic.co/downloads/past-releases/elasticsearch-7-6-1,推荐迅雷下载(速度较快)。
2.3安装ElasticSearch
将下载好的压缩包进行安装即可,解压后如下图所示:
解压安装
-
安装目录
-
bin 启动文件
-
config 配置文件
- log4j2:日志配置文件
- jvm.options:Java 虚拟机相关配置
- elasticsearch.yml:elasticsearch配置文件,默认 9200 端口,解决跨域问题。
-
lib 相关jar包
-
modules 功能模块
-
plugins 插件(如IK分词器)
-
2.4启动ElasticSearch
打开bin文件夹下的elasticsearch.bat文件,双击启动后访问默认地址:localhost:9200,即可得到以下json格式的数据:
{
"name" : "ZHUZQC",
"cluster\_name" : "elasticsearch",
"cluster\_uuid" : "AMdLpCANStmY8kvou9-OtQ",
"version" : {
"number" : "7.6.1",
"build\_flavor" : "default",
"build\_type" : "zip",
"build\_hash" : "aa751e09be0a5072e8570670309b1f12348f023b",
"build\_date" : "2020-02-29T00:15:25.529771Z",
"build\_snapshot" : false,
"lucene\_version" : "8.4.0",
"minimum\_wire\_compatibility\_version" : "6.8.0",
"minimum\_index\_compatibility\_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
2.5可视化界面-head安装
下载地址:https://github.com/mobz/elasticsearch-head/
安装要求:先检查计算机是否安装node.js、