ElasticSearch的简单介绍

来源:互联网 发布:淘宝加热棒 编辑:程序博客网 时间:2024/06/05 09:11

ElasticSearch的基本概念


1、集群:一个或者多个节点组织在一起

 

2、节点:一个节点是集群中的一个服务器,由一个名字来标识,默认是一个随机的漫微角色的名字

 

3、分片:将索引(相当于数据库)划分为多份的能力,允许水平分割和扩展,对个分片响应请求,提供性能和吞吐量

 

4、副本:创建分片的一份或者多份的能力(相当于备份),在一个节点失败其余节点可以顶上

ElasticSearch的数据存储概念

1、index(索引,可以理解为数据库) 动词索引:索引/检索/查询

2、type(类型,可以理解为数据库表)

3、documents(文档(一段json),可以理解为数据库表的行)

4、fields(可以理解为数据库表的列)

ElasticSearch不是一个中间库,是一个集合了数据保存数据分析的搜索引擎服务器

HTTP标准请求方法

1、get 请求指定的页面信息,并返回实体主体

2、Post 向指定资源提交数据进行处理请求,数据被包含在请求体重。Post请求可能会导致新的资源的建立和/或已有资源的修改

3、Put向服务器传送的数据取代指定的文档的内容。

4、Delete 请求服务器删除中的页面

5、还有Options trace connect head请求....

 

倒排索引

一般底层的存储,都是使用倒排索引

倒排索引源于实际应用中需要根据属性的值来查找记录,这种索引表中的每一项都包括一个属性值和具有该属性值的各记录的地址,由于不是由记录来确定属性值,而是由属性值来确定记录的位置,因而被称为倒排索引(inverted index)。带有倒排索引的文件我们成为倒排索引文件,简称倒排文件(inverted file)

dict = {“name””zhangsan”,..................................................}


例如:

文件A :通过python django搭建网站

文件B:python scrapy爬取网站数据

文件C:scrapy-redis分布式爬虫

正常的思维方式:
对所有文件进行遍历,为了查询一个python关键词,需要对所有文件进行遍历,假设有上亿个文件,进行这种查找是不符合实际的

倒排索引:

每个文件在插入之前,做文件遍历分析,分词

例如:对“python写各大聊天系统的屏蔽脏话功能原理”进行分词,结果如下图所示

,将每个分词对应的文章存储起来,有些词需要进行分词,例如“的”这种没有含义的词,我们需要考虑要不要将其放进来,当然,这些工作elasticserach都已经帮我们做好了


这就是简单的倒排索引的模型,但是只是这样还不够完善

如果某一篇文章中出现的词次数比较高,我们需要根据词出现的次数进行打分,出现次数多的文章则表明该词的权重,所以我们需要对词进行打分


倒排列表,是一个列表


真正倒排索引还有很多问题要解决:

1. 大小写转换问题,例如python和PYTHON应该为一个词

2. 词干抽取,looking和look应该处理为一个词

3. 分词,如屏蔽系统应该分词为屏蔽、系统还是应该为屏蔽系统 IK

4. 倒排索引文件过大-压缩编码

当然这些问题都不需要我们去关心,elasticsearch已经帮我们解决了,大家了解这些个概念就可以了