Elasticsearch的基本概念

1、Elasticsearch的概念

    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。
    1. Elasticsearch是一个基于Lucene的分布式、通过Restful风格进行交互的近实时搜索平台框架。
    2. Lgstash是ELK的中央数据流引擎,用于从不同目标(文件/数据库/MQ)收集的不同数据格式,经过过滤后支持输出到不同的目的地(文件/MQ/Redis/elasticsearch/kafka等)。
    3. Kibana可以将ES的数据通过友好的页面展示出来,提供实时数据分析的功能。

4、Elasticsearch的核心概念

1. Elasticsearch与关系型数据库的客观对比

Elasticsearch是面向文档的,以下是关系型数据库与Elasticsearch的客观对比

Relational DB Elasticsearch
数据库(database) 索引(Index)
表(table) 类型(types)
数据行(rows) 文档(documents)
数据列(columns) 字段(fields)

2. Elasticsearch的相关设计

Elasticsearch(集群)中可以包括多个索引(数据库),每个索引可以包含多个类型(表),每个类型可以包含多个文档(行),每个文档可以包含多个字段(列)

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)而不是面向文档的。

你可能感兴趣的:(ElasticSearch,常用工具,Java,elasticsearch)