Elasticsearch 是分布式文档存储。Elasticsearch 不会将信息存储为列数据行,而是存储已序列化为JSON文档的复杂数据结构。当集群中有多个 Elasticsearch 节点时,存储的文档将分布在集群中,并且可以从任何节点立即访问。

默认情况下,Elasticsearch 根据结果相关性评分(文档与查询条件的匹配程度)来对结果集进行排序。

核心概念

集群(Cluster)

集群:一个或者多个运行的 Elasticsearch 节点的服务器。

一个集群有一个cluster.namecluster.name是集群的唯一标识。默认是elasticsearch。具有相同cluster.name的节点组成一个集群。

配置

通过配置文件config/elasticsearch.yml

cluster.name: yhq-es

集群状态

  • green:主分片与副本分片都正常分配。
  • yellow:主分片全部正常分配,有副本分片未能正常分配。
  • red:有主分片未能正常分配。

节点(Node)

  • 节点(node)是一个运行着 Elasticsearch 的实例。本质就是一个Java进程。

  • 每一个节点都有名字,通过配置文件配置,或启动时 -E node.name=node1指定。

  • 每个节点在启动后,会分配一个UID,保存在data目录下。

一台机器可以运行多个 Elasticsearch 进程,但是建议生产环境一台机器只运行一个 Elasticsearch 实例。

索引(Index)

包含一堆有相似结构的文档。

文档(Document)

  • Elasticsearch 是面向文档的,文档是所有可搜索数据的最小单位
  • 文档会被序列化成JSON格式,保存到 Elasticsearch 中。
  • 每个文档都会有一个UNIQUE ID(自定义或 Elasticsearch 生成)。

分片(Shards)

主分片

用于解决数据水平扩展的问题。通过主分片,可以将数据分布到集群内的所有节点之上。

  • 一个分片是一个运行的Lucene实例。
  • 主分片数在索引创建时指定(默认5个),后续不允许修改,除非Reindex

副本分片(Replicas)

用于解决数据高可用的问题。副本分片是主分片的拷贝(默认1个,即1个主分片对应1个副本分片)。

  • 副本分片数,可以动态调整。
  • 增加副本分片数,还可以在一定程度上提供服务的可用性(读取的吞吐)。

ElasticSearch Vs 关系型数据库

Relational DB Elasticsearch
Databases Indices
Tables Types
Rows Documents
Columns Fields
SQL DSL

版权声明:本文为yhq-qhh原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/yhq-qhh/p/9605716.html