文章目录
ElasticSearch是什么?
- 是一个基于Luence的全文搜索引擎,基于RESTful web接口
- ElasticSearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎
了解Luence
Lucene是一套用于全文检索和搜寻的开源程序库。其主要目的就是解决全文搜索。
那么全文搜索能有什么问题?
那我们先看看搜索
搜索
搜索:把数据找出来。对数据进行搜索,那就不得不提数据分类。
数据的分类
结构化数据:具有固定格式或者固定长度的数据。对于结构化数据我们一般都是存储在关系型数据库table中;那么对于结构化数据搜索,一般是建立索引,通过B-tree等数据结构快速搜索。
非结构化数据: 指没有固定格式或不定长的数据。如文章。那么对于非结构化数据我们怎么进行搜索呢?主要有两种方法:顺序扫描法,全文搜索法
顺序扫描
顺序扫描:从头到尾扫描 一边,标记要搜索的关键词;这样的方法无疑效率是很低的。
全文搜索
全文搜索:扫描非结构化数据,对每一个词建立一个索引,根据建立的索引进行查找,并将查找的结果反馈给用户。
那么问题来了,Luence是怎么实现全文搜索的。
Luence是怎么实现全文搜索
全文搜索基本上分为两个步骤:创建索引和搜索索引
(1~4)索引过程
- 有一个待索引文件
- 待索引文件经过词法分析和语言处理后形成一系列词(Term)
- 列词经过索引创建形成词典和反向索引表
- 通过索引存储将索引存入硬盘
(a-g)搜索过程
a. 用户输入查询语句
b. 查询语句经过词法分析和语言处理得到一系列词(Term)
c. 一系列词(Term)经过语法分析后得到一个查询树
d. 索引存储将索引读入内存
e. 利用查询树搜索索引,从而得到每个词(Term)的文档链表,对文档链表进行交,差,并得到结果文档
f.将搜索到的结果文档对查询的相关性进行排序
g. 返回查询结果给用户
更深一步的知识,以后我再深入学习
应用场景
- 全文搜索
- ELK记录和日志分析
- 数据可视化:Kibana
ElasticSearch核⼼概念
索引(index):相当于mysql的数据库
类型(type) :相当于mysql的table,ES 7.x以后已经移除type这个概念。
⽂档(document):相当于mysql行数据
映射(mapping):mapping定义了每个字段的类型等信息。相当于mysql中的表结构。
字段(field):相当于mysql表的字段
集群(cluster):集群由⼀个或多个节点组成,⼀个集群有⼀个默认名称"elasticsearch"。
节点(node): 集群的节点,⼀台机器或者⼀个进程
分⽚和副本(shard):分⽚有主分⽚(primary Shard)和副本分⽚(replica Shard)之分。副本是分⽚的副本,⼀个Index数据在物理上被分布在多个主分⽚中,每个主分⽚只存放部分数据,每个主分⽚可以有多个副本,叫副本分⽚,是主分⽚的复制
ElasticSearch高扩展
ElasticSearch高实时
ElasticSearch近实时搜索的实现https://blog.csdn.net/dc_726/article/details/94252850
来源:CSDN
作者:newheart_2020
链接:https://blog.csdn.net/weixin_42723054/article/details/104647350