ElasticSearch(一)初识ElasticSearch

定义

ElasticSearch是一个分布式的搜索引擎,它的内部是基于Lucene写的。它用于全文搜索,半结构化数据搜索以及分析统计。我们可以使用它来作为系统中的的搜索引擎。可以使用简单的RestFul API与ElasticSearch进行交互。它提供了两种交互式协议,一种是ElasticSearch Transport Protocol协议,一种是Http协议。ElasticSearch Transport Protocol协议走的是9300端口,Http协议走的是9200端口。

特点

  • 可以作为大型分布式集群技术(数百台服务器),处理PB级的数据,服务于大公司。也可以运行在单个机器上,服务于小公司。
  • 将全文检索、数据分析和分布式技术融合在一起。
  • 上手简单,开箱即用,门槛低。
  • 速度快,对海量数据可以做到近实时搜索。

ElasticSearch概念

索引

所谓的ElasticSearch索引其实就像关系型数据库的表,或者像是JavaBean的引用,通过表或者引用可以找到数据或者JavaBean,那么我们可以通过ElasticSearch索引找到存储在ElasticSearch集群上的数据(文档)。ElasticSearch索引可以存储在一个节点上也可以存储在多个节点上,每个索引有一个或者多个分片,每个分片有多个副本。

文档

所谓的ElasticSearch文档其实就是一个索引下的一种类型的数据,如果我们把索引看作是一个表,那么我们就可以把文档看做是这个表中的一行数据,那么我们就可以得出一个文档下是有多个字段的,并且我们可以回忆一下,当我们利用API与ElasticSearch交互的时候是不是需要传入一个索引名和一个文档名。

节点和集群

我们都知道ElasticSearch把数据存储在索引上,并且索引下又包含多个不同类型或者相同类型的文档,每个文档有有多个字段。一开始ElasticSearch的设计是用来处理数以亿计的文档,那么可想而知,单节点的ElasticSearch肯定是不行的,所以ElasticSearch利用集群来管理数以亿计的文档以及秒级别的查询速度的。
作为用户我们可以跟任何节点进行通讯,包括主节点,因为ES中各个节点都知道文档存储在哪些节点上,接受请求的节点只负责收集各个节点返回来的数据并返回给客户端。
网络可达的情况下,cluster.name相同的节点会自动感知,组成一个集群或者加入一个集群。集群的规模扩大或者缩小的时候,分片的会自动在集群内进行迁移,保证了节点之间的数据平衡。

分片

所谓的分片(一个分片其实就是Lucene的一个索引)其实就是将数据拆分成不同的数据块(默认是5个,可以有用户自行定义),将这些数据块分别散落在不同节点上,并且这些数据块为了提高数据的可靠性,会被复制成一个或者多个副本(默认是一个,也可以由用户自行定义),副本又分为主和从,主分片在索引创建的时候就已经确定了,但是副本分片可以随时调整,如果主丢失,那么从就会代替主成为主分片。当我们查询的索引对应的数据有多个分片的时候,ElasticSearch会把查询发送到每个分片对应的节点上去获取数据,然后将数据组装起来返回给客户端。分片可以加快查询速度。

倒排索引

倒排索引的原理就是“单词–>文档ID矩阵”的一种存储形式。倒排索引其实就是根据单词找到文档。在ES中,文档会按照一定的语法进行词,那么每个分词会对应一个或者多个文档,这样ES就会维护一个表,列举出单词对应的文档的ID以及单词出现在该文档的位置以及频率。倒排索引又分为“单词词典”和“倒排文件”。
单词词典:
倒排文件:

标题

ElasticSearch交互

我们知道它是干嘛的了,那么我们怎么使用它呢?下边我们就开始介绍具体的使用方式。

Java API

由于ElasticSearch是Java写的,所以它肯定提供了与Java语言进行交互的方式。ElasticSearch与Java客户端进行交互是基于ElasticSearch Transport Protocol协议的,走的是9300端口。

HTTP协议的Restful API

ElasticSearch不提供了Java API方式的交互方式,而且还支持RestFul API。这种方式是基于HTTP协议,走的而是9200端口。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值