其他分享
首页 > 其他分享> > elasticsearch -- 文档操作

elasticsearch -- 文档操作

作者:互联网

简介

Elasticsearch提供了单文档API和多文档API,其中API调用分别针对单个文档和多个文档。

原文链接:https://www.cainiaojc.com/elasticsearch/elasticsearch-document-apis.html

 

增/添加数据

特性:

当对具有特定映射的相应索引进行请求时,它有助于在索引中添加或更新JSON文档。

例如,以下请求会将JSON对象添加到索引学校和学校映射下

PUT schools/_doc/5

# JSON数据
{
   "name":"City School", "description":"ICSE", "street":"West End",
   "city":"Meerut",
   "state":"UP", "zip":"250002", "location":[28.9926174, 77.692485],
   "fees":3500,
   "tags":["fully computerized"], "rating":"4.5"
}

结果:

{
    "_index": "schools",
    "_id": "1",
    "_version": 1,
    "result": "created",
    "_shards": {
        "total": 2,
        "successful": 1,
        "failed": 0
    },
    "_seq_no": 1,
    "_primary_term": 1
}

如图:

 

 

 

注意:

action.auto_create_index:false
index.mapper.dynamic:false
action.auto_create_index:+acc*,-bank*

注意:此处 + 表示允许,而 – 表示不允许。

 

版本控制

Elasticsearch还提供了版本控制工具。我们可以使用版本查询参数来指定特定文档的版本。

版本控制是一个实时过程,不受实时搜索操作的影响。这个主要是ES使用的乐观锁来保证数据安全,所有我们可以通过version来更新原数据, 

PUT schools/_doc/2?version=2&version_type=external
{ "name":"Central School", "description":"CBSE Affiliation", "street":"Nagan", "city":"paprola", "state":"HP", "zip":"176115", "location":[31.8955385, 76.8380405], "fees":2200, "tags":["Senior Secondary", "beautiful campus"], "rating":"3.3" }

返回:

{
    "_index": "schools",
    "_id": "1",
    "_version": 2,
    "result": "updated",
    "_shards": {
        "total": 2,
        "successful": 1,
        "failed": 0
    },
    "_seq_no": 2,
    "_primary_term": 1
}

注意: _version :2 , result: update, 更新成功

有两种最重要的版本控制类型-

内部版本控制是默认版本,从1开始,并随着每次更新(包括删除)而递增。
当文档的版本控制存储在外部系统(如第三方版本控制系统)中时,将使用此功能。
要启用此功能,我们需要将version_type设置为external。
在这里,Elasticsearch将存储外部系统指定的版本号,并且不会自动对其进行递增。

 

操作类型

操作类型用于强制执行创建操作。这有助于避免覆盖现有文档。

PUT chapter/_doc/1?op_type=create


{
   "Text":"this is chapter one"
}

返回:

{
    "_index": "schools",
    "_id": "3",
    "_version": 1,
    "result": "created",
    "_shards": {
        "total": 2,
        "successful": 1,
        "failed": 0
    },
    "_seq_no": 3,
    "_primary_term": 1
}

如图:

 

 

获取操作

API通过对特定文档执行get请求来帮助提取类型JSON对象。

GET schools/_doc/3

示例:

 

注意:

 

指定所需的字段

GET schools/_doc/5?_source_includes=name,fees

返回:

{
   "_index" : "schools",
   "_type" : "_doc",
   "_id" : "5",
   "_version" : 7,
   "_seq_no" : 3,
   "_primary_term" : 1,
   "found" : true,
   "_source" : {
      "fees" : 2200,
      "name" : "Central School"
   }
}

详解:

 

删除操作

发送HTTP DELETE请求来删除特定的索引,映射或文档。

DELETE schools/_doc/4

返回:

{
    "_index": "schools",
    "_id": "1",
    "_version": 3,
    "result": "deleted",
    "_shards": {
        "total": 2,
        "successful": 1,
        "failed": 0
    },
    "_seq_no": 4,
    "_primary_term": 1
}

如图:

 

 

更新操作

脚本用于执行此操作,版本控制用于确保在获取和重新编制索引期间未发生任何更新。例如,您可以使用脚本更新学费-

POST schools/_update/4
{
   "script" : {
      "source": "ctx._source.name = params.sname",
      "lang": "painless",
      "params" : {
         "sname" : "City Wise School"
      }
   }
 }

返回:

{
   "_index" : "schools",
   "_type" : "_doc",
   "_id" : "4",
   "_version" : 3,
   "result" : "updated",
   "_shards" : {
      "total" : 2,
      "successful" : 1,
      "failed" : 0
   },
   "_seq_no" : 4,
   "_primary_term" : 2
}

您可以通过向更新的文档发送获取请求来检查更新。

 

标签:index,版本控制,--,索引,version,文档,schools,elasticsearch
来源: https://www.cnblogs.com/TF511/p/16498883.html