ElasticSearch(一):入门篇

1. 概述

ElasticSearch是一个基于Lucene的搜索服务器,基于Restful标准的高扩展高可用的实时数据分析的全文搜索工具

2. 基本概念

  1. 索引(index):相当于关系型数据库中的database;
  2. 类型(type):类似于关系型数据库中的table;
  3. 文档(document):ES存储的数据是文档型的,一条数据对应一篇文档,即关系型数据库中的一行数据row
  4. 字段(field):ES中的一个文档对应多个列
  5. 映射(mapping):有动态映射的功能,但在实际生产环境中不建议使用,最好开始的时候制定好对应的mapping
  6. 建立索引(indexed):关系型数据库(mysql)可以对经常使用的列增加索引来提高查询速度,但在ElasticSearch中,默认会为每个字段建立倒排索引。
  7. Query DSL:类似于mysql的sql语句,但在ElasticSearch中使用json格式的查询语句,专业术语是QueryDSL

3. ElasticSearch架构

在这里插入图片描述

  1. Gateway:
    ES用来存储索引文件的一个文件系统,并且支持多种类型:本地磁盘、共享存储、hadoop的hdfs分布式存储、亚马逊的S3。它的主要职责是用来对数据进行长持久化,以及整个集群重启之后可以通过gateway重新恢复数据;
  2. Distributed Lucene Directory:
    Gateway的上一层,是一个Lucene的分布式框架,Lucene是做检索的,但它是一个单机的搜索引擎。ES的底层使用Lucene,但需要在每个节点上都运行Lucene进行相应的索引、查询、更新,所以需要做成一个分布式的运行框架来满足业务需求;
  3. 四大模块组件:
    (1). Index Module索引模块,对数据建立索引,即建立倒排索引
    (2). Search Module搜索模块,对数据进行查询搜索;
    (3). Mapping映射模块,进行数据映射与解析的模块。数据的每个字段,可以根据你建立的表结构,通过mapping进行映射解析;如果没有建立表结构,ES会根据你的数据类型推测你的数据结构后,自动生成一个mapping,然后根据这个mapping进行解析你的数据;
    (4). River模块,是一个第三方插件,主要通过脚本进行同步数据(从传统数据库同步到ES集群),但会严重影响ES的正常使用,在ES2.0后将其取消。
  4. Discovery、Script层:
    (1). 四大模块之上是Discovery发现层。ES是一个集群,包含很多节点,很多节点都需要互相发现对方,然后组成一个集群,包括选主的。这些ES都是用的discovery模块,默认使用Zen,也可使用EC2;
    (2). ES查询可以支撑多种script脚本语言,包括mvel、js、python等。
  5. Transport层
    发现层之上,是ES的通讯接口,支持的比较多:Thrift、Memcached、http,默认是http。JMX是java的一个远程监控管理框架,因为ES就是通过java实现的。
  6. RESTful接口层
    最上层就是ES暴露给我们的访问接口。官方推荐的方案就是通过Restful接口,直接发送http请求。

4. Restful API

是一种软件架构的设计风格,不是标准,只是提供了一组设计原则和约束条件。
使用典型的HTTP方法。GET 获取资源/POST 新建资源(更新资源)/PUT 更新资源/DELETE 删除资源

5. 倒排索引

ElasticSearch使用倒排索引算法,使其适用于快速的全文搜索。一个倒排索引由文档中所有不重复词的列表构成,对于其中每个词,有一个包含它的文档列表。
实例:
要建立倒排索引的文档:
在这里插入图片描述
建立倒排索引之后:
在这里插入图片描述

  1. 单词ID:对文档分词后,每个单词的单词编号;
  2. 单词:分词后对应的单词;
  3. 文档频率:代表文档集合中有多少个文档包含某个单词;
  4. 倒排列表:包含单词ID及其他必要信息;
  5. DocID:单词出现的文档id;
  6. TF:单词在某个文档中出现的次数;
  7. POS:单词在某个文档中出现的位置;
    以单词“加盟”为例,其单词编号为6,文档频率为3,代表整个文档集合中有三个文档包含这个单词,对应的倒排列表为{(2;1;<4>),(3;1;<7>),(5;1;<5>)},含义是在文档2,3,5出现过这个单词,在每个文档的出现过1次,单词“加盟”在第一个文档的POS是4,即文档的第四个单词是“加盟”,其他的类似。

更多详情:
可以参考这篇博文:https://blog.csdn.net/starzhou/article/details/87519973

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值