介绍
一、介绍
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个节点的集群,可以看到主分片和副本分别存放在不同的节点,即使有一个节点挂了也不会影响整体的数据完整。
本文来自博客园,作者:yyyz,转载请注明原文链接:https://www.cnblogs.com/yyyzyyyz/p/15694522.html