-
一个索引就是一个拥有几分相似特征的文档的集合,索引必须全部是小写字母的。
-
映射是定义一个文档和它所包含的字段如何被存储和索引的过程。
-
文档就是索引中存储的一条条数据。
通俗来理解就是:索引就是数据库中的表,而映射就是定义表时的约束(字段,类型等等),而文档就是表中的一条条数据。
1.索引的操作
1.1查询索引
#查询ES中的索引
GET _cat/indices?v
1.2创建索引
#创建索引
PUT /索引名=》PUT /product
注意:ES中索引的健康状态:red(索引不可用)、yellow(可用,但存在风险)、green(健康),默认创建一个primary索引和备份索引,因为主备都在一台机器上,索引存在风险是yellow。
#创建一个green索引
PUT /orders
{
"settings": {
"number_of_shards": 1, #指定主分片的数量
"number_of_replicas": 0, #指定副分片的数量
}
}
1.3删除索引
#删除索引
DELETE /索引名=》DELETE /product
2.映射
字符串类型:keyword(不分词)、text(分词)
数字类型:integer、long
小数类型:float、double
布尔类型:boolean
日期类型:date
2.1创建索引的同时定义映射
#创建商品索引
#id,title,price,created_at,description
PUT /products
{
"settings": {
"number_of_shards": 1,
"number_of_replicas": 0
},
"mappings": {
"properties": {
"id":{
"type":"integer"
},
"title":{
"type":"keyword"
},
"price":{
"type":"double"
},
"created_at":{
"type":"date"
},
"description":{
"type":"text"
}
}
}
}
2.2查询索引的映射
GET /索引名 /_mapping =》GET /products/_mapping
3.文档
3.1添加文档
注意:如果原来的文档id已经存在,那么就会删除原来的文档,再插入新的文档。
3.1.1手动指定id
# 添加文档操作 手动指定_id
POST /products/_doc/1
{
"id":1,
"title":"瑞星咖啡",
"price":"10.5",
"created_at":"2024-11-28",
"description":"和好喝"
}
3.1.2自动指定id
# 添加文档操作 自动指定_id
POST /products/_doc/
{
"title":"星巴克克",
"price":"12.5",
"created_at":"2024-11-18",
"description":"不好喝"
}
3.2文档查询
3.2.1基于文档id查询
GET /products/_doc/1
3.3删除文档
3.3.1基于id删除文档
DELETE /products/_doc/Dc-V6IwB9_tvl7L5kzja
3.3.2查询一个索引下的所有文档
GET /products/_search
{
"query": {
"match_all": {}
}
}
3.4更新文档(保留原始文档)
3.4.1基于指定的字段进行更新
POST /products/_doc/1/_update
{
"doc":{
"price":"16.4",
"description":"很好喝"
}
}
3.5.批量操作
必须在一行,不能换行!而且批量操作是不具备原子性的,如果出错了还会继续向下执行。