Elasticsearch的基本概念
1、Elasticsearch的概念
es,是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据,其扩展性很好。es是使用Java开发并使用Lucene作为其核心来实现所有索引和搜索功能,它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而实现简单的全文搜索。
2、Elasticsearch与solr的区别
区别 | es | solr |
安装方面 | es基本上是开箱即用(解压即可使用) | solr的安装稍微复杂 |
管理方面 | es自带分布式协调管理功能 | solr需要利用Zookeeper进行分布式管理 |
数据格式 | es仅支持json格式数据,但是基本够用 | solr支持更多的格式,例如:json、xml、csv等 |
功能方面 | es注重于核心功能,高级功能主要依赖于第三方插件 | solr提的功能更多 |
性能方面 | es建立索引快既实时更新快,查询较于solr稍慢 | solr查询速度快,当更新索引慢(既插入删除慢) |
技术支持 | es相对开放维护者较少,更新速度快学习成本高 | solr较为成熟拥有更为成熟的用户、开发和贡献者社区 |
3、ELK的概念
ELK时Elasticsearch、Logstash和Kibana三大开源框架的首字母大写,市面上也称为Elastic Stack。
- Elasticsearch是一个基于Lucene的分布式、通过Restful风格进行交互的近实时搜索平台框架。
- Lgstash是ELK的中央数据流引擎,用于从不同目标(文件/数据库/MQ)收集的不同数据格式,经过过滤后支持输出到不同的目的地(文件/MQ/Redis/elasticsearch/kafka等)。
- Kibana可以将ES的数据通过友好的页面展示出来,提供实时数据分析的功能。
4、Elasticsearch的核心概念
- Elasticsearch与关系型数据库的客观对比
Elasticsearch是面向文档的,以下是关系型数据库与Elasticsearch的客观对比
Relational DB | Elasticsearch |
数据库(database) | 索引(Index) |
表(table) | 类型(types) |
数据行(rows) | 文档(documents) |
数据列(columns) | 字段(fields) |
- Elasticsearch的相关设计
Elasticsearch(集群)中可以包括多个索引(数据库),每个索引可以包含多个类型(表),每个类型可以包含多个文档(行),每个文档可以包含多个字段(列)
1.物理设计:
Elasticsearch在后台把每个索引划分为多个分片,每个分片可以在集群中的不同服务器减迁移。(注意:Elasticsearch单机部署也是一个集群,其默认集群名称为elasticsearch。)
2.逻辑设计:
一个索引类型中可以包含多个文档,所以可以通过一系列顺序找到对应的文档信息,例如:索引 -> 类型 -> 文档ID,通过这个组合我们能够找到某个具体的文档。(注意:这里的文档ID不一定为整数,大部分情况这个ID是一个字符串。)
1.物理设计:
Elasticsearch在后台把每个索引划分为多个分片,每个分片可以在集群中的不同服务器减迁移。(注意:Elasticsearch单机部署也是一个集群,其默认集群名称为elasticsearch。)
2.逻辑设计:
一个索引类型中可以包含多个文档,所以可以通过一系列顺序找到对应的文档信息,例如:索引 -> 类型 -> 文档ID,通过这个组合我们能够找到某个具体的文档。(注意:这里的文档ID不一定为整数,大部分情况这个ID是一个字符串。)
Elasticsearch中相关关键字的描述
1.文档
Elasticsearch是面向文档的,那么就意味着索引和搜索的最小单位就是文档,其中文档有以下几个重要的属性:
- 自我包含,一篇文档同时包含字段和对应的值,也就是同时包含key:value
- 可以是层次型的,一个文档中包含自文档,复杂的逻辑实体就是这么来的
-灵活的结构,文档不依赖于西安设定的模式,在Elasticsearch中。对于字段是非常灵活的,不用像关系型数据库那样需要提前定义字段才能使用
2.类型
类型是文档的逻辑容器,就像关系型数据库一样,表格是航的容器。类型中对字段的定义称为映射。类型在最新的Elasticsearch中已经不是那么重要。
3.索引
索引是映射类型的容器,Elasticsearch中的索引是一个非常大的文档集合。索引存储了映射类型的字段和其他设置,然后它们呗存储到各个分片上。
节点和分片的工作方式
一个集群至少有一个节点,而一个节点就是一个elasticsearch进程,节点可以有多个索引默认的,如果创建索引那么索引将会有5个分片(primary shard,又称主分片)构成,每个主分片会有一个副本(replica shard,又称复制分片)。
倒排索引
elasticsearch使用的是一种称为倒排索引的结构,采用Lucene倒排索引作为底层,这种结构适用于快速的全文搜索,一个索引有文档中所有不重复的列表构成,对于每一个词都有一个包含它的文档列表。elasticsearch的索引是有多个Lucene索引组成。
倒排索引建立的是分词(Term)和文档(Document)之间的映射关系,在倒排索引中,数据是面向词(Term)而不是面向文档的。
还没有评论,来说两句吧...