Java 杂谈Java技术分享我爱编程

【ES】ElasticSearch基本概念阐述

2019-01-31  本文已影响117人  墨迹嘿嘿
首发.png

Lucene是一个Java语言开发的开源全文检索引擎工具包,Lucene穿了一件json的外衣,就是ElasticSearch,我们这里简称为ES ,ES内置了对分布式集群和分布式索引的管理,针对于另外一个搜索工具Solr来说,更容易分布式部署,这里不介绍Solr了。

ES属于面向文档(Document Oriented)的,这意味着它可以存储整个对象或者文档数据(Document),然而,它不仅仅是存储,还有索引(index)每一个文档的内容使之可以被搜索,可以对文档进行索引,搜索,排序,过滤,分词,高亮显示。ES比传统关系型数据库查询更加迅速。

ES中每一个运行的实例都被称为一个节点(node),实例即可在同一个机器上运行也可以在不同的机器上运行。一个ES集群是由一个或者多个ES节点组成的集合,这个集群里有一个节点叫主节点(master),节点可以存储数据,参与索引数据等的独立服务。而且ES是去中心化的,所以主节点是动态选举出来的,不存在单点故障


image.png

下面阐述一下ES当中的一些常见词语含义:

集群

集群由一个或多个节点组成,对外提供服务,索引和搜索功能。在所有的节点中,一个集群有一个唯一的名称默认为“ElasticSearch”,此名称很重要,因为每个节点只能是集群的一部分,当该节点被设置为相同的集群名称时,就会自动加入集群。当需要多个集群的时候,要确保每个集群的名称不能重复,否则,节点可能会加入错误的集群。

节点

一个节点是你集群中的一个服务器,作为集群的一部分,它存储你的数据,参与集群的索引和搜索功能。和集群类似,一个节点也是由一个名字来标识的

索引

一个索引就是一个拥有几分相似特征的文档的集合。比如说,你可以有一个客户数据的索引,另一个产品目录的索引,还有一个订单数据的索引。一个索引由一个名字来标识(必须全部是小写字母的),并且当我们要对对应于这个索引中的文档进行索引、搜索、更新和删除的时候,都要使用到这个名字。在一个集群中,可以定义任意多的索引。

类型

在索引中,可以定义一个或多个类型,类型是索引的逻辑分区,相当于数据库中的表。

文档

文档是存储在ES中的一个JSON字符串,相当于数据库中表的一行,ES是一个非结构化的数据库,每一个文档可以有不同的字段,并且有一个唯一的标识符

字段

类似关系型数据库的某一列,这是ES数据存储的最小单位

分片

每个索引都有多个分片, 每个分片都是一个luncene,索引分片的好处: 分摊索引的搜索压力, 分片还支持水平的拓展和拆分以及分布式的操作, 可以提高搜索和其他处理的效率

备份

拷贝一个分片就完成了分片的备份,备份的好处: 当主分片失败或者挂掉, 备份就可以代替分片进行操作, 进而提高了es的可用性, 备份的分片还可以进行搜索操作, 以分摊搜索的压力。ES在创建索引时, 默认创建5个分片, 一份备份, 可以修改, 分片的数量只能在创建索引的时候指定, 索引创建后就不能修改分片的数量了, 而备份是可以动态修改的

数据库与ES对比图:

image.png

注:在ES6.0.0及更高的版本中,创建的索引只能包含一个映射类型。在6.0.0以下的版本中创建的一个索引映射多个类型的索引在6.0.0版本中继续发挥作用,但是将在7.0.0中完全删除。

ES特性

速度快、易扩展、弹性、灵活、操作简单、多语言客户端、X-Pack、hadoop/spark强强联手、开箱即用。

分布式:横向扩展非常灵活

全文检索:基于lucene的强大的全文检索能力;

近实时搜索和分析:数据进入ES,可达到近实时搜索,还可进行聚合分析

高可用:容错机制,自动发现新的或失败的节点,重组和重新平衡数据

模式自由:ES的动态mapping机制可以自动检测数据的结构和类型,创建索引并使数据可搜索。

RESTful API:JSON + HTTP

参考:

官网:https://www.elastic.co/cn/products/elasticsearch
https://www.elastic.co

我们不仅仅是代码的搬运工,同时也是技术的分享者,欢迎关注摘星族


摘星族.jpg
上一篇下一篇

猜你喜欢

热点阅读