es总结
elasticSearch 的基本概念
index
在Elasticsearch中,索引是存储相关数据的数据结构,可以理解为数据库中的表。
在创建索引时,需要定义每个字段的数据类型(如文本、数字、日期等)和其他属性(如是否需要分析、是否存储等)。此外,映射还可以定义其他高级功能,如聚合、排序和过滤等。
Type
在早期版本的Elasticsearch中,类型(type)是一个非常重要的概念。每个索引内部都可以有多个类型,而每个类型下又可以存储多个文档。类型实际上是索引内部的一种逻辑分区,通过类型名称在索引内进行唯一标识。
从Elasticsearch 7.x版本开始,索引中的每个文档都直接属于一个索引,而不再需要指定类型。这主要是为了简化索引和查询操作,提高查询效率。
document
文档是Elasticsearch中存储和检索的基本单位,它是序列化为JSON格式的数据结构
cluster
一个Elasticsearch集群通常包含了多个节点(Node)和一个或多个索引(Index),并且这些节点和索引共同构成了整个Elasticsearch集群,在所有节点上提供联合索引和搜索功能。
每个Cluster都有一个唯一的名称,即cluster name,它用于标识和区分不同的Elasticsearch集群。
node
在Elasticsearch集群中,Node是指运行Elasticsearch实例的服务器。每个Node都有自己的名称和标识符,并且都有自己的数据存储和索引存储。
一个Elasticsearch集群由一个或多个Node组成,这些Node通过它们的集群名称进行标识。在默认情况下,如果Elasticsearch已经开始运行,它会自动生成一个叫做“elasticsearch”的集群。我们也可以在配置文件(elasticsearch.yml)中定制我们的集群名字。
Node在Elasticsearch中扮演着不同的角色。根据节点的配置和功能,可以将Node分为以下几种类型:
- Master Node:负责整个Cluster的配置和管理任务,如创建、更新和删除索引,添加或删除Node等。一个Cluster中至少需要有一个Master Node。
- Data Node:主要负责数据的存储和处理,它们可以处理数据的CRUD操作、搜索操作、聚合操作等。一个Cluster中可以有多个Data Node。
- Ingest Node:主要负责对文档进行预处理,如解析、转换、过滤等操作,然后再将文档写入到Index中。每个Cluster中至少需要有一个Ingest Node。 除了上述的三种类型外,还可以有Tribe Node、Remote Cluster Client等特殊用途的Node。
Node之间是对等关系(去中心化),每个节点上面的集群状态数据都是实时同步的。如果Master节点出故障,按照预定的程序,其他一台Node机器会被选举成为新的Master。
需要注意的是,一个Node可以同时拥有一种或几种功能,如一个Node可以同时是Master Node和Data Node。
shards
在Elasticsearch中,Shards是索引的分片,每个Shard都是一个基于Lucene的索引。当索引的数据量太大时,由于内存的限制、磁盘处理能力不足、无法足够快的响应客户端的请求等,一个节点可能不够用。这种情况下,数据可以被分为较小的分片,每个分片放到不同的服务器上。每个分片可以有零个或多个副本。这不仅能够提高查询效率,还能够提高系统的可靠性和可用性。如果某个节点或Shard发生故障,Elasticsearch可以从其他节点或Shard的副本中恢复数据,从而保证数据的可靠性和可用性。
每个Shard都存储在集群中的某个节点上,每个节点可以存储一个或多个Shard。当查询一个索引时,Elasticsearch会在所有的Shard上执行查询,并将结果合并返回给用户。
对于每个索引,在创建时需要指定主分片的数量,一旦索引创建后,主分片的数量就不能更改。
replicas
在Elasticsearch中,Replicas是指索引的副本。它们的作用主要有两点:
- 提高系统的容错性。当某个节点发生故障,或者某个分片(Shard)损坏或丢失时,可以从副本中恢复数据。这意味着,即使一个节点或分片出现问题,也不会导致整个索引的数据丢失。这种机制可以增加系统的可靠性,并减少因节点或分片故障导致的宕机时间。
- 提高查询效率。Elasticsearch会自动对搜索请求进行负载均衡,可以将搜索请求分配到多个节点上,从而并行处理搜索请求,提高查询效率。这种负载均衡机制可以在节点之间分发查询请求,使得每个节点都可以处理一部分查询请求,从而避免了一个节点的瓶颈效应。
需要注意的是,在Elasticsearch中,每个索引可以有多个副本(Replicas),但是每个副本只能有一个主分片(Primary Shard)。可以增加或删除副本的数量。
ES概念 | 关系型数据库 |
---|---|
Index(索引)支持全文检索 | Table(表) |
Document(文档),不同文档可以有不同的字段集合 | Row(数据行) |
Field(字段) | Column(数据列) |
Mapping(映射) | Schema(模式) |
基本的api
查看健康度
1 |
|
索引
- 查询所有索引
1 |
|
- 创建索引
1 |
|
1 |
|
- 删除索引
1 |
|
文档
创建文档
1 |
|
判断文档是否存在
1 |
|
获取文档
1 |
|
获取数据
1 |
|
获取指定字段
1 |
|
更新文档
1 |
|
批量获取
1 |
|
删除文档
1 |
|
获取数量
1 |
|
elasticSearch stack 生态圈
search
url Search
- q 指定查询语句,使用 query string syntax
- df 默认字段
- sort 排序 /from 和 size用于 分页
- profile 可查看查询是如何否被执行
request body search
precision 查准率 –尽可能返回较少的无关文档
recall 查全率 –尽可能返回较多的相关文档
ranking