天天看点

ElasticSearch入门简介:基础概念:

简介:

ElasticSearch是一个开源的分布式搜索分析引擎,近实时和分布式存储,搜索,分析引擎。类似产品如Solr(Apache开源项目),Splunk等产品。因为ElasticSearch是基于Lucene开发的,Lucene是ES的基础,Lucene提供了高性能,易扩展的特性,但是原生不支持水平扩展,并且原生接口学习成本高,只能基于Java语言开发。这使得ES使用Lucene底层接口进行二次开发和扩展。

ES支持单机模式和集群模式,并且支持节点类型架构。

ES提供了哪些功能 ,大体上是三类:海量数据的分户式存储以及集群管理,近实时搜索,聚合等功能。

基础概念:

文档 :

ElasticSearch是面向文档的,文档是所有可搜索数据的最小单位,文档在ES中会被序列化层JSON格式的数据,每个文档都一个一个文档ID,文档ID可以自动生成和自定义,ID可以唯一标识一个文档数据。一条文档数据中又包括了一系列的字段,类似于数据库中的一条记录,ES中也会自动推算存储的数据类型,支持丰富的数据类型。

元数据:

用于标注文档的元数据信息:

_index 文档所属索引名
_type 文档所属类型(6.0后废除,7.0type只能是_doc)
_id 文档唯一id
_source 文档原始的JSON数据
_version 文档的版本信息,解决并发冲突问题
_score 相关性打分

索引:

相似文档的集合,类似于数据库,一个索引表示存储一类数据。一个索引包括mapping和setting,mapping定义索引存储文档的字段类型,setting定义索引分布情况-一般是主副分片调配,索引状态配置等。

节点:

运行了单个实例的ES主机称为节点,它是集群的一个成员,可以存储数据、参与集群索引及搜索操作。通过配置可以指定主节点和从节点,或者让其自动选举也可以。

节点类型:data-数据节点,coordination-协调节点,默认都是协调节点,hot-热节点,高效对外提供搜索,warm-冷节点,搜索效率较低,machine learning-机器学习节点,ingest-预热节点,文档存储前的预处理。

分片:

ES中一个分片就是一个Lucene实例,“分片(shard)”机制可将一个索引内部的数据分布地存储于多个节点,它通过将一个索引切分为多个底层物理的Lucene索引完成索引数据的分割存储功能,这每一个物理的Lucene索引称为一个分片(shard)。每个分片其内部都是一个全功能且独立的索引,因此可由集群中的任何主机存储。创建索引时,用户可指定其分片的数量,默认数量为1个,后续不可修改,除非是reindex操作。

副本:

Shard有两种类型:primary和replica,即主shard及副本shard。Primary shard用于文档存储,每个新的索引会自动创建1个Primary shard,当然此数量可在索引创建之前通过配置自行定义,不过,一旦创建完成,其Primary shard的数量将不可更改。Replica shard是Primary Shard的副本,用于冗余数据及提高搜索性能。每个Primary shard默认配置了一个Replica shard,但也可以配置多个,且其数量可动态更改。

段:

索引中最小的独立存储单元。一个索引文件由一个或者多个段组成。在Lucene中,段有不变性,段一旦生成,在段上只能读取、不可写入。这也是为什么ES中数据没有真正删除,只是被标识然后存储到删除文档中。

继续阅读