ElasticSearch学习笔记1-修改文档

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 本文中所有用[]括起来的和xxx都是变量 基本操作:1、根据id修改文档,使用POST请求 POST /[index]/[type]/[id]/_update { "doc": {"[XXX]":"[xxxxx]"} } 举例: 上面这个图片中index为test,type为doc,id为1.

本文中所有用[]括起来的和xxx都是变量

基本操作:
1、根据id修改文档,使用POST请求

POST /[index]/[type]/[id]/_update
{
  "doc": {"[XXX]":"[xxxxx]"}
}

举例:

image
上面这个图片中index为test,type为doc,id为1,我们将里面的name改为“name03” age改为20,请求如下:

POST  /test/doc/_update
{
    "doc": {
        "name": "name03",
        "age": 20
    }
}

返回结果为:

{
    "_index": "test",
    "_type": "doc",
    "_id": "1",
    "_version": 13,
    "result": "updated",
    "_shards": {
        "total": 2,
        "successful": 1,
        "failed": 0
    },
    "_seq_no": 13,
    "_primary_term": 1
}

对该id再进行一次查询,结果如图所示:
image

2、使用脚本修改

POST /[index]/[type]/[id]/_update
{
  "script" : "ctx._source.[xxx] = [xxx]"
}

继续使用上面的文档

POST  /test/doc/1/_update
{
   "script":"ctx._source.age+=5;ctx._source.name=\"name04\""
}

查询结果:
image
修改成功。
3、删除

DELETE   /[index]/[type]/[id]

比较简单,不做举例
4、批量创建
批量创建和批量修改的请求都是一样的, 传的参数不一样
请求:

POST    /[index]/[type]/_bulk

批量创建参数:
{"index":{"_id":"xxx"}}
{"xxx": "xxx" }
{"index":{"_id":"xxx"}}
{"xxx": "xxx" }

举例:

POST /test01/doc01/_bulk
{"index":{"_id":"1"}}
{"name": "name01" }
{"index":{"_id":"2"}}
{"name": "name02","age":20 }
{"index":{"_id":"3"}}
{"name": "name03","age":20 }   --------------1

这里有一点要注意:在图中1的位置,后面一定要换行,否则会报错,提示需要新的一行作为结束的标识,报错信息如下

{
    "error": {
        "root_cause": [
            {
                "type": "illegal_argument_exception",
                "reason": "The bulk request must be terminated by a newline [\n]"
            }
        ],
        "type": "illegal_argument_exception",
        "reason": "The bulk request must be terminated by a newline [\n]"
    },
    "status": 400
}

image
image
注意上面两张图片中最左边序号的不同,下面是正确的json数据,体会什么叫以新的一行作为结束的标识。

这种操作实际上是id存在就更新,不存在就创建,返回结果如下:

{
  "took": 162,
  "errors": false,
  "items": [
    {
      "index": {
        "_index": "test01",
        "_type": "doc01",
        "_id": "1",
        "_version": 6,
        "result": "updated",
        "_shards": {
          "total": 2,
          "successful": 1,
          "failed": 0
        },
        "_seq_no": 5,
        "_primary_term": 1,
        "status": 200
      }
    },
    {
      "index": {
        "_index": "test01",
        "_type": "doc01",
        "_id": "2",
        "_version": 2,
        "result": "updated",
        "_shards": {
          "total": 2,
          "successful": 1,
          "failed": 0
        },
        "_seq_no": 1,
        "_primary_term": 1,
        "status": 200
      }
    },
    {
      "index": {
        "_index": "test01",
        "_type": "doc01",
        "_id": "3",
        "_version": 1,
        "result": "created",
        "_shards": {
          "total": 2,
          "successful": 1,
          "failed": 0
        },
        "_seq_no": 0,
        "_primary_term": 1,
        "status": 201
      }
    }
  ]
}

查看下这三个id的具体内容:
image

5、批量修改
参数:

{"update":{"_id":"xxx"}}
{"doc": { "XXX": "xxx" } }
{"delete":{"_id":"xxx"}}

现在对上面创建的三条记录做批量修改:

POST /test01/doc01/_bulk
 {"update":{"_id":"1"}}
{"doc": { "name": "name011"}}
{"delete":{"_id":"2"}}
{"update":{"_id":"3"}}
{"script": "ctx._source.age+=5;ctx._source.name=\"name033\""}  -----------1

和批量创建一样,最后一行需要换行。
查询索引test01的数据如下:
image
数据全部修改成功!

相关实践学习
利用Elasticsearch实现地理位置查询
本实验将分别介绍如何使用Elasticsearch7.10版本进行全文检索、多语言检索和地理位置查询三个Elasticsearch基础检索子场景的实现。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
5天前
|
存储 索引
Elasticsearch中父子文档的关联:利用Join类型赋予文档的层级关系
Elasticsearch中父子文档的关联:利用Join类型赋予文档的层级关系
|
2月前
|
自然语言处理 测试技术 网络安全
ElasticSearch7最新实战文档-附带logstash同步方案
ElasticSearch7最新实战文档-附带logstash同步方案
27 0
|
2月前
|
存储 安全 数据处理
Elasticsearch 为什么会产生文档版本冲突?如何避免?
Elasticsearch 为什么会产生文档版本冲突?如何避免?
34 0
|
2月前
|
安全 Python
Elasticsearch 删除重复文档实现方式,你知道几个?
Elasticsearch 删除重复文档实现方式,你知道几个?
15 0
|
2月前
|
JSON 前端开发 API
【Elasticsearch】搜索结果处理和RestClient查询文档
【Elasticsearch】搜索结果处理和RestClient查询文档
368 0
|
2月前
|
JSON 自然语言处理 算法
【Elasticsearch】DSL查询文档
【Elasticsearch】DSL查询文档
328 0
|
2月前
|
SQL JSON API
ELK技术栈 - Elasticsearch 学习笔记(三)
ELK技术栈 - Elasticsearch 学习笔记(三)
57 0
|
2月前
|
存储 JSON API
ELK技术栈 - Elasticsearch 学习笔记(二)
ELK技术栈 - Elasticsearch 学习笔记(二)
214 0
|
2月前
|
存储 SQL JSON
ELK技术栈 - Elasticsearch 学习笔记(一)
ELK技术栈 - Elasticsearch 学习笔记(一)
200 0
|
2月前
Elasticsearch之RestClient查询文档
Elasticsearch之RestClient查询文档
153 1