SpringCloud——分布式搜索elasticsearch之文档操作

elasticsearch的文档操作

在Elasticsearch中,文档是存储在索引中的最小数据单元。它是对应于JSON格式的数据对象,表示实际的数据记录。每个文档都具有唯一的ID,并且包含一组键值对,用于表示文档的字段和相应的值,本文主要介绍了对文档的基本操作。



官网:https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html

1、新增文档

向Elasticsearch中的索引添加新文档时,可以使用HTTP请求通过RESTful API进行操作。以下是一个示例用法来新增文档:

假设我们有一个名为my_index的索引,my_index的基本属性如下
create_at、emali、field1、field2、name(包含firstname)、price、title
在这里插入图片描述1、使用HTTP PUT请求创建一个新的文档:

PUT /my_index/_doc/1
{
    
    
  "name":{
    
    
    "firstname":"测试"
  },
  "email":"[email protected]",
  "create_at":"2023-05-20",
  "filed1":"测试字段1",
  "field2":"测试字段2",
  "price":90,
  "title":"测试案例"
}

在上述示例中,我们使用PUT请求将一个具有指定ID(此处为1)的文档添加到my_index索引中。请求的内容是一个JSON对象。
返回结果:
在这里插入图片描述
2、使用自动生成的文档ID创建新文档:

POST /my_index/_doc
{
    
    
  "name":{
    
    
    "firstname":"测试2"
  },
  "email":"[email protected]",
  "create_at":"2023-05-21",
  "filed1":"测试字段2-1",
  "field2":"测试字段2-2",
  "price":180,
  "title":"测试案例2"
}

上述代码我们使用了POST请求向名为my_index的索引中新增了一个文档,此时新增的文档ID是自动生成文档ID并添加文档。
在这里插入图片描述使用PUT和使用POST新增文档的区别

PUT:PUT方法用于在指定的终端点上创建或更新指定的资源。当使用PUT请求时,您需要明确指定要创建或更新的资源的唯一标识符。如果指定的资源已经存在,则会更新该资源;如果不存在,则会创建一个新的资源。因此,使用PUT请求时,您需要提供明确的文档ID,以便指定要创建或更新的文档。

PUT /<索引名>/_doc/<文档id>
{
    
    
字段名:字段值
字段名:字段值
}

POST:POST方法用于在指定的终端点上执行操作,例如在索引中创建文档、执行搜索或聚合等。当使用POST请求时,Elasticsearch会自动生成一个唯一的文档ID,并将文档添加到指定的索引中。如果指定的文档ID已经存在,Elasticsearch将返回一个错误。因此,每次使用POST请求创建文档时,都会生成一个新的文档ID

POST /<索引名>/_doc
{
    
    
字段名:字段值
字段名:字段值
}

总结来说,POST用于自动生成文档ID并添加文档,PUT用于明确指定文档ID并创建或更新文档。选择使用POST还是PUT取决于对文档ID的要求以及创建还是更新文档。

扫描二维码关注公众号,回复: 17280243 查看本文章

2、查询文档

1、查询文档id的文档
在Elasticsearch中,查询文档的语法主要使用GET请求来进行,结构如下:

GET /索引名称/_doc/文档ID

其中,索引名称是要查询的索引的名称,文档ID是要查询的文档的唯一标识符。

以我们的索引my_index为例:

GET /my_index/_doc/1

在这里插入图片描述2、查询所有文档
在Elasticsearch中,查询文档的语法主要使用GET请求来进行,使用_search端点,并指定一个匹配所有文档的查询条件,例如match_all查询。以下是一个查询所有文档的示例:

GET /索引id/_search
{
    
    
  "query": {
    
    
    "match_all": {
    
    }
  }
}

在这里插入图片描述响应中的hits字段包含了查询到的文档信息,其中hits.hits是一个数组,每个元素代表一个匹配的文档。
_source中显示了每个文档的具体内容。

3、删除文档

可以使用删除文档的API。在Elasticsearch中,可以使用DELETE方法和文档的索引、类型和ID来删除文档。以下是删除文档的语法和一个示例:

DELETE /<索引名称>/<文档类型>/<文档ID>

假如我们现在要删除文档id为Vy7NjogBvRBn7emX3Wv8的文档(上文中PUT的文档)

DELETE /my_index/_doc/Vy7NjogBvRBn7emX3Wv8

在这里插入图片描述
从Elasticsearch 7.x版本开始,类型已经被弃用,因此在新版本中,可以直接使用_doc作为文档类型。

4、修改文档

1、使用PUT命令修改文档

PUT /<索引名称>/_doc/<文档ID>
{
    
    
  "字段1": "值1",
  "字段2": "值2",
  ...
}

修改索引为my_index的文档id为1 的文档数据:

PUT /my_index/_doc/1
{
    
    
  "name":{
    
    
    "firstname":"修改文档"
  },
  "emali":"[email protected]",
  "create_at":"2022-11-11",
  "filed1":"修改1",
  "filed2":"修改2",
  "price":80,
  "title":"修改"
}

在这里插入图片描述修改后:
在这里插入图片描述注意

  • 如果文档不存在,则会创建一个新文档;如果文档已经存在,则会替换现有文档的内容。
  • 使用PUT请求更新文档时,Elasticsearch会完全替换现有文档的内容。如果只提供了要更新的部分字段,其他字段将被视为缺失并被删除。
  • 仅更新部分字段而保留其他字段不变,推荐使用部分更新(Partial Update)的方式,使用POST请求和_update API来进行部分更新.

2、使用POST命令修改文档
使用POST更新文档操作:
方式一:
全量修改,会删除旧的文档,增加新的文档

PUT /<索引名称>/_doc/<文档ID>
{
    
    
    "字段1": "新值1",
    "字段2": "新值2",
}

以下是更新索引my_index中文档id为1的文档数据

PUT /my_index/_doc/1
{
    
    
    "name":{
    
    
    "firstname":"PUT修改文档"
  },
  "emali":"[email protected]",
  "create_at":"2022-12-12",
  "filed1":"PUT修改1",
  "filed2":"PUT修改2",
  "price":800,
  "title":"POST修改"
}

在这里插入图片描述

方式二:
增量修改,修改指定字段的值,该格式可以进行部分更新

POST /<索引名称>/_update/<文档ID>
{
    
    
  "doc": {
    
    
    "字段1": "新值1",
    "字段2": "新值2",
    ...
  }
}

示例:
我们修改了文档id为1的部分数据
在这里插入图片描述总结:
创建文档(新增):

使用 **POST /<索引名称>/_doc 或 PUT /<索引名称>/_doc/<文档ID>**方法来创建新的文档。
在请求正文中提供文档的字段和值。
查询文档:

使用**GET /<索引名称>/_doc/<文档ID>**方法来获取特定ID的文档。
使用 GET /<索引名称>/_search方法来执行高级查询并获取匹配的文档。
更新文档:

使用 POST /<索引名称>/_update/<文档ID> 方法进行部分更新。
使用 PUT /<索引名称>/_doc/<文档ID> 方法进行完全替换。
删除文档:

使用 DELETE /<索引名称>/_doc/<文档ID> 方法来删除特定ID的文档。
使用 DELETE /<索引名称> 方法来删除整个索引库。

猜你喜欢

转载自blog.csdn.net/qq_52227892/article/details/131062701