01-Elasticsearch

2019-08-15  本文已影响0人  且听风吟_aab8

Elasticsearch 是一个分布式、可扩展、实时的搜索与数据分析引擎, 基于Lucene和Restful接口,它提供了一个分布式多用户能力的全文搜索引擎。
同时,它又不仅仅只是全文搜索,它还能实现结构化搜索、数据分析、复杂的人类语言处理、地理位置和对象间关联关系等

怎么理解Elasticsearch

  1. 一个分布式的实时文档存储,每个字段 可以被索引与搜索
  2. 一个分布式实时分析搜索引擎
  3. 能胜任上百个服务节点的扩展,并支持 PB 级别的结构化或者非结构化数据

面向文档

Elasticsearch 是面向文档的,意味着它存储整个对象或文档。Elasticsearch 不仅存储文档,而且索引每个文档的内容,使之可以被检索。在 Elasticsearch 中,我们对文档进行索引、检索、排序和过滤--而不是对行列数据。这是一种完全不同的思考数据的方式,也是 Elasticsearch 能支持复杂全文检索的原因。

Elasticsearch的主要概念:

节点

它指的是Elasticsearch的单个正在运行的实例。单个物理和虚拟服务器容纳多个节点,这取决于其物理资源的能力,如RAM,存储和处理能力。

集群

它是一个或多个节点的集合。 集群为整个数据提供跨所有节点的集合索引和搜索功能。

索引

它是不同类型的文档和文档属性的集合。索引还使用分片的概念来提高性能。 例如,一组文档包含社交网络应用的数据。

类型/映射

它是共享同一索引中存在的一组公共字段的文档的集合。 例如,索引包含社交网络应用的数据,然后它可以存在用于用户简档数据的特定类型,另一类型可用于消息的数据,以及另一类型可用于评论的数据。

文档

它是以JSON格式定义的特定方式的字段集合。每个文档都属于一个类型并驻留在索引中。每个文档都与唯一标识符(称为UID)相关联。

碎片

索引被水平细分为碎片。这意味着每个碎片包含文档的所有属性,但包含的数量比索引少。水平分隔使碎片成为一个独立的节点,可以存储在任何节点中。主碎片是索引的原始水平部分,然后这些主碎片被复制到副本碎片中。

副本

Elasticsearch允许用户创建其索引和分片的副本。 复制不仅有助于在故障情况下增加数据的可用性,而且还通过在这些副本中执行并行搜索操作来提高搜索的性能。

Elasticsearch的健康检查

GET /_cluster/health

返回

{
   "cluster_name":          "elasticsearch",
   "status":                "green", 
   "timed_out":             false,
   "number_of_nodes":       1,
   "number_of_data_nodes":  1,
   "active_primary_shards": 0,
   "active_shards":         0,
   "relocating_shards":     0,
   "initializing_shards":   0,
   "unassigned_shards":     0
}

green
所有的主分片和副本分片都正常运行。
yellow
所有的主分片都正常运行,但不是所有的副本分片都正常运行。
red
有主分片没能正常运行。

Elasticsearch的优点

  1. Elasticsearch是基于Java开发的,有跨平台的特性。
  2. Elasticsearch是实时的,换句话说,一秒钟后,添加的文档可以在这个引擎中搜索得到。
  3. Elasticsearch是分布式的,这使得它易于在任何大型组织中扩展和集成。
  4. 通过使用Elasticsearch中的网关概念,创建完整备份很容易。
  5. 与Apache Solr相比,在Elasticsearch中处理多租户非常容易。
  6. Elasticsearch使用JSON对象作为响应,这使得可以使用不同的编程语言调用Elasticsearch服务器。
  7. Elasticsearch支持几乎大部分文档类型,但不支持文本呈现的文档类型。

Elasticsearch的缺点

  1. Elasticsearch在处理请求和响应数据方面仅支持JSON。

相关阅读:

https://www.elastic.co/guide/cn/elasticsearch/guide/current/index.html
上一篇下一篇

猜你喜欢

热点阅读