Elasticsearch基础

1、简介

Elasticsearch是实时的分布式搜索分析引擎,内部使用Lucene做索引与搜索。

何谓实时?新增到 ES 中的数据在1秒后就可以被检索到,这种新增数据对搜索的可见性称为“准实时搜索”。分布式意味着可以动态调整集群规模,弹性扩容,而这一切操作起来都非常简便,用户甚至不必了解集群原理就可以实现。按官方的描述,集群规模支持“上百”个节点,相比HDFS等上千台的集群,这个规模“小了点”。影响集群规模上限的原因将在后续的章节中分析。因此,目前我们认为ES适合中等数据量的业务,不适合存储海量数据

Lucene是Java语言编写的全文搜索框架,用于处理纯文本的数据,但它只是一个库,提供建立索引、执行搜索等接口,但不包含分布式服务,这些正是 ES 做的。什么是全文?对全部的文本内容进行分析,建立索引,使之可以被搜索,因此称为全文。

基于ES,你可以很容易地搭建自己的搜索引擎,用于分析日志,或者配合开源爬虫建立某个垂直领域的搜索引擎。ES 易用的产品设计使得它很容易上手。除了搜索,ES 还提供了大量的聚合功能,所以它不单单是一个搜索引擎,还可以进行数据分析、统计,生成指标数据。而这些功能都在快速迭代,目前每2周左右就会发布新版本。

1.1、索引结构

ES是面向文档的。各种文本内容以文档的形式存储到ES中,文档可以是一封邮件、一条日志,或者一个网页的内容。一般使用 JSON 作为文档的序列化格式,文档可以有很多字段,在创建索引的时候,我们需要描述文档中每个字段的数据类型,并且可能需要指定不同的分析器,就像在关系型数据中“CREATE TABLE”一样。

在存储结构上,由_index、_type和_id唯一标识一个文档。

_index指向一个或多个物理分片的逻辑命名空间,_type类型用于区分同一个集合中的不同细分,在不同的细分中,数据的整体模式是相同或相似的,不适合完全不同类型的数据。多个_type可以在相同的索引中存在,只要它们的字段不冲突即可(对于整个索引,映射在本质上被“扁平化”成一个单一的、全局的模式)。_id文档标记符由系统自动生成或使用者提供。

1.2、分片(shard)

在分布式系统中,单机无法存储规模巨大的数据,要依靠大规模集群处理和存储这些数据,一般通过增加机器数量来提高系统水平扩展能力。因此,需要将数据分成若干小块分配到各个机器上。然后通过某种路由策略找到某个数据块所在的位置。

你可能感兴趣的:(#,分布式,系统架构,数据库,elasticsearch,大数据,搜索引擎)