索引、映射、文档

发布时间:2024年01月08日
  • 一个索引就是一个拥有几分相似特征的文档的集合,索引必须全部是小写字母的。

  • 映射是定义一个文档和它所包含的字段如何被存储和索引的过程。

  • 文档就是索引中存储的一条条数据。

通俗来理解就是:索引就是数据库中的表,而映射就是定义表时的约束(字段,类型等等),而文档就是表中的一条条数据。

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.批量操作

必须在一行,不能换行!而且批量操作是不具备原子性的,如果出错了还会继续向下执行。

?

文章来源:https://blog.csdn.net/m0_62565675/article/details/135464526
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。