学习下ElasticSearch
阅读目录
ElasticSearch基础概念
Elasticsearch在Centos 7上的安装常见的问题
使用场景:比如分库的情况下,你想统计所有数据的报表,就把所有数据都放在ElasticSearch上
关系型数据库 | ElasticSearch |
数据库Database | 索引index,支持全文检索 |
表Table | 类型Type |
数据行Row | 文档Document |
数据列Column | 字段Field |
模式Schema | 映射Mapping |
用关系型数据库就会想到建立一张User表,再建字段等,
而在Elasticsearch的文件存储,Elasticsearch是面向文档型数据库,一条数据在这里就是一个文档,用JSON作为文档序列化的格式
在ES6.0之后,已经不允许在一个index下建不同的Type了,一个index下只有一个Type(以后版本中Type概念会去掉,可以直接把index类比成Table)
节点Node:
一个ElasticSearch运行的实列,集群构成的单元
集群Cluster:
由一个或多个节点组成,对外提供服务
Elasticsearch实现原理-倒排索引
ElasticSearch是基于倒排索引实现的
倒排索引(Inverted Index)也叫反向索引,有反向索引必有正向索引。
通俗地来讲,正向索引是通过key找value,反向索引则是通过value找key。
倒排索引—单词词典
单词词典(Term Dictionary)是倒排索引的重要组成部分。
——记录所有文档的单词,一般都比较大
——记录单词到倒排列表的关联信息(这个单词关联了哪些文档)
倒排索引—排序列表
倒排列表(Posting List)记录了单词对应文档的集合,由倒排索引项(Posting)组成
倒排索引项(Posting)主要包含如下信息
—文档Id,用于获取原始信息
—单词频率(TF,Term Frequency),记录该单词在文档中出现的次数,用于后序相关算分
—位置(Position),记录单词在文档中的分词位置,用于做词语搜索(Phrase Query)
—偏移(Offset),记录单词在文档的开始和结束位置,用于高亮显示
分词
搜索引擎的核心是倒排索引,而倒排索引的基础就是分词。所谓分词可以简单理解为将一个完整的句子切割为一个个单词的过程。也可以叫文本分析,在es称为Analysis。
如文本:elasticSearch是最流行的搜索引擎
分词结果:elasticSearch 流行 搜索引擎