1.核心架构概念
1.1 集群(Cluster)
-
一个或多个节点的集合
-
唯一标识:
cluster.name(默认 "elasticsearch") -
所有节点共同持有完整数据,提供跨节点联合索引和搜索能力
1.2 节点(Node)
-
集群中的单个服务器,存储数据并参与集群的索引和搜索
-
节点类型:
-
主节点:负责集群管理(索引创建、删除、节点管理)
-
数据节点:存储数据,执行数据相关操作(CRUD、搜索、聚合)
-
协调节点:处理客户端请求,路由操作
-
Ingest 节点:数据预处理管道
-
1.3 分片(Shard)
-
索引的子集,是数据存储的基本单元
-
主分片:数据的原始分片,数量在索引创建时固定
-
副本分片:主分片的拷贝,提供:
-
高可用(故障转移)
-
提高搜索性能(并行处理)
-
数据冗余
-
2.基本概念
2.1 文档和字段
文档:elasticsearch是面向文档(Document)存储的,可以是数据库中的一条商品数据,一个订单信息。文档数据会被序列化为json格式后存储在elasticsearch中。
字段:而Json文档中往往包含很多的字段(Field),类似于mysql数据库中的列。
一个文档就像数据库里的一条数据,字段就像数据库里的列。

2.2 索引和映射
索引:索引(Index),就是相同类型的文档的集合【类似mysql中的表】
映射:索引库中就有映射(mapping),是索引中文档的字段约束信息,类似表的结构约束。

3. 基本操作
3.1 索引库操作
创建索引库和映射
PUT /索引库名称
{
"mappings": {
"properties": {
"字段名":{
"type": "text",
"analyzer": "ik_smart"
},
"字段名2":{
"type": "keyword",
"index": "false"
},
"字段名3":{
"properties": {
"子字段": {
"type": "keyword"
}
}
},
// ...略
}
}
}
查询索引库
GET /索引库名
修改索引库
PUT /索引库名/_mapping
{
"properties": {
"新字段名":{
"type": "integer"
}
}
}
删除索引库
DELETE /索引库名
3.2 文档操作
新增文档
POST /索引库名/_doc/文档id
{
"字段1": "值1",
"字段2": "值2",
"字段3": {
"子属性1": "值3",
"子属性2": "值4"
},
// ...
}
查询文档
GET /{索引库名称}/_doc/{id}
//批量查询:查询该索引库下的全部文档
GET /{索引库名称}/_search
删除文档
DELETE /{索引库名}/_doc/id值
修改文档
全量修改
PUT /{索引库名}/_doc/文档id
{
"字段1": "值1",
"字段2": "值2",
// ... 略
}
增量修改
POST /{索引库名}/_update/文档id
{
"doc": {
"字段名": "新的值",
}
}