Loading

介绍

一、介绍

1 Elasticsearch介绍

当项目的数据规模极大时,数据检索会面临很多问题,比如数据库的选型,如何保证数据安全性,如何定位故障等等,这些就是 Elasticsearch的产生原因。

Elasticsearch是一个基于Lucene库的搜索引擎。它提供了一个分布式、RESTful 风格的搜索和数据分析引擎,具有HTTP Web接口和无模式JSON文档。Elasticsearch是用Java开发的,并在Apache许可证下作为开源软件发布。它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。官方客户端在Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby和许多其他语言中都是可用的。

就 Elasticsearch 而言,起步很简单。对于初学者来说,它预设了一些适当的默认值,并隐藏了复杂的搜索理论知识。 它开箱即用。只需最少的理解,你很快就能具有生产力。

2 solr介绍

Solr(读作“solar”)是Apache Lucene项目的开源企业搜索平台,基于java开发。其主要功能包括全文检索、命中标示、分面搜索、动态聚类、数据库集成,以及富文本(如Word、PDF)的处理。Solr是用Java编写、运行在Servlet容器(如Apache Tomcat或Jetty)的一个独立的全文搜索服务器。与Elasticsearch都是提供数据检索的软件。

3 Elasticsearch的相关概念

3.1 Cluster集群

集群是一个或多个节点(服务器)的集合, 这些节点共同保存整个数据,并在所有节点上提供联合索引和搜索功能。一个集群由一个唯一集群ID确定,并指定一个集群名(默认为“elasticsearch”)。该集群名非常重要,因为节点可以通过这个集群名加入群集,一个节点只能是群集的一部分。

3.2 Node节点

形成集群的每个服务器称为节点。节点的名称默认为一个随机的通用唯一标识符(UUID),确定在启动时分配给该节点。如果不希望默认,可以定义任何节点名。

3.3 Index索引

索引是具有相似特性的文档集合。例如,可以为客户数据提供索引,为产品目录建立另一个索引,以及为订单数据建立另一个索引。索引由名称(必须全部为小写)标识,该名称用于在对其中的文档执行索引、搜索、更新和删除操作时引用索引。在单个群集中,您可以定义尽可能多的索引。

3.4 Type类型

在索引中,可以定义一个或多个类型。类型是索引的逻辑类别/分区,其语义完全取决于您。一般来说,类型定义为具有公共字段集的文档。例如,假设你运行一个博客平台,并将所有数据存储在一个索引中。在这个索引中,您可以为用户数据定义一种类型,为博客数据定义另一种类型,以及为注释数据定义另一类型。

3.5 Document文档

索引和搜索的最小单位就是文档。

3.6 Shards分片

当有大量的文档时,由于内存的限制、磁盘处理能力不足、无法足够快的响应客户端的请求等,一个节点可能不够。这种情况下,数据可以分为较小的分片。每个分片放到不同的服务器上。当你查询的索引分布在多个分片上时,ES会把查询发送给每个相关的分片,并将结果组合在一起,而应用程序并不知道分片的存在。即:这个过程对用户来说是透明的。

3.7 Replia副本

Elasticsearch允许你创建一个或多个拷贝,你的索引分片进入所谓的副本或称作复制品的分片,实现高可用性。需要注意的是,一个副本的分片不会分配在同一个节点作为原始的或主分片,副本是从主分片那里复制过来的。当主分片丢失时,如:该分片所在的数据不可用时,集群将副本提升为新的主分片。

4 关系型数据库和ElasticSearch中的概念对比

MySQL Elasticsearch
Database(数据库) Index(索引)
Table(数据表) Type(类型)
Row(行) Dcoument(文档)
column(列) Field(字段)
Schema Mapping
CURD(增删改查) GET,PUT,POST,UPDATE...
  • 关系型数据库中的数据库(DataBase),等价于ES中的索引(Index)
  • 一个数据库下面有N张表(Table),等价于1个索引Index下面有N多类型(Type),
  • 一个数据库表(Table)下的数据由多行(ROW)多列(column,属性)组成,等价于1个Type由多个文档(Document)和多Field组成。
  • 在一个关系型数据库里面,schema定义了表、每个表的字段,还有表和字段之间的关系。 与之对应的,在ES中:Mapping定义索引下的Type的字段处理规则,即索引如何建立、索引类型、是否保存原始索引JSON文档、是否压缩原始JSON文档、是否需要分词处理、如何进行分词处理等。
  • 在数据库中的增删改查操作,等价于ES中的GET,PUT,POST,UPDATE

5 ElasticSearch结构图

一个集群包含至少一个节点,节点内可以有多个索引。索引内有很多分片,分片有主分片,同时每个分片又有一个副本,如下图中有3个节点的集群,可以看到主分片和副本分别存放在不同的节点,即使有一个节点挂了也不会影响整体的数据完整。

image

posted @ 2021-12-15 18:37  yyyz  阅读(9)  评论(0编辑  收藏  举报