ElasticSearch学习日志——了解ElasticSearch

我的梦境 提交于 2020-03-04 15:52:35

ElasticSearch是什么?

  • 是一个基于Luence全文搜索引擎,基于RESTful web接口
  • ElasticSearch 是一个分布式高扩展高实时搜索数据分析引擎

了解Luence

Lucene是一套用于全文检索和搜寻的开源程序库。其主要目的就是解决全文搜索

那么全文搜索能有什么问题?
那我们先看看搜索

搜索

搜索:把数据找出来。对数据进行搜索,那就不得不提数据分类。

数据的分类

结构化数据:具有固定格式或者固定长度的数据。对于结构化数据我们一般都是存储在关系型数据库table中;那么对于结构化数据搜索,一般是建立索引,通过B-tree等数据结构快速搜索。
非结构化数据: 指没有固定格式不定长的数据。如文章。那么对于非结构化数据我们怎么进行搜索呢?主要有两种方法:顺序扫描法,全文搜索法

顺序扫描

顺序扫描:从头到尾扫描 一边,标记要搜索的关键词;这样的方法无疑效率是很低的。

全文搜索

全文搜索:扫描非结构化数据,对每一个词建立一个索引,根据建立的索引进行查找,并将查找的结果反馈给用户。

那么问题来了,Luence是怎么实现全文搜索的。

Luence是怎么实现全文搜索

在这里插入图片描述
全文搜索基本上分为两个步骤:创建索引搜索索引
(1~4)索引过程

  1. 有一个待索引文件
  2. 待索引文件经过词法分析和语言处理后形成一系列词(Term)
  3. 列词经过索引创建形成词典和反向索引表
  4. 通过索引存储将索引存入硬盘

(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高实时

ElasticSearch近实时搜索的实现https://blog.csdn.net/dc_726/article/details/94252850

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!