ES中更新字段和删除字段的操作

这篇具有很好参考价值的文章主要介绍了ES中更新字段和删除字段的操作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

👏作者简介:大家好,我是Rockey,不知名企业的不知名Java开发工程师
🔥如果感觉博主的文章还不错的话,请👍三连支持👍一下博主哦
📝联系方式:he18339193956,加我进群,大家一起学习,一起读书,一起对抗互联网寒冬👀

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站 点击跳转浏览。

ES中更新某一个字段,以及添加某一个字段

第一种:放在doc 对象中
_update

POST /index_name/type/id/_update
{
  "doc": {
    "column": "column_value"
  }
}

示例:
POST /xxx_company/info/8fe6e9b2a9330862/_update
{
  "doc": {
    "eps": {
      "value": 0,
      "value_usd": 0
    }
  }
}

_update_by_query
查询之后,通过脚本进行更新处理

POST index_name/_update_by_query
{
  "query": {
    "match": {
      "条件": "8fe6e9b2a9330862"
    }
  },
  "script": {
    "source": "ctx._source['column'] = params['one']",
    "params": {
      "one": "修改后的值"
    }
  }
}

示例:
POST xxxx_company/_update_by_query
{
  "query": {
    "match": {
      "_id": "8fe6e9b2a9330862"
    }
  },
  "script": {
    "source": "ctx._source['eps'] = params['one']",
    "params": {
      "one": {
        "value": 1.0,
        "value_usd": 1.1
      }
    }
  }
}

第二种:下面是通过脚本进行更新操作

PUT test/type1/1
{
    "counter" : 1,
    "tags" : ["red"]
}

执行以下操作

POST test/type1/1/_update
{
    "script" : {
        "source": "ctx._source.counter += params.count",
        "lang": "painless",
        "params" : {
            "count" : 4
        }
    }
}

查看一下结果

{
  "_index": "test",
  "_type": "type1",
  "_id": "1",
  "_version": 3,
  "found": true,
  "_source": {
    "counter": 5,
    "tags": [
      "red"
    ]
  }
}

执行二

POST test/type1/1/_update
{
    "script" : {
        "source": "ctx._source.tags.add(params.tag)",
        "lang": "painless",
        "params" : {
            "tag" : "blue"
        }
    }
}

查看结果

{
  "_index": "test",
  "_type": "type1",
  "_id": "1",
  "_version": 2,
  "found": true,
  "_source": {
    "counter": 1,
    "tags": [
      "red",
      "blue"
    ]
  }
}

除_source外,通过ctx映射还可以使用以下变量:_index,_type,_id,_version,_routing,_parent和_now(当前时间戳)。
还可以在文档中添加一个新字段

POST test/type1/1/_update
{
    "script" : "ctx._source.new_field = 'value_of_new_field'"
}

结果如下:

{
  "_index": "test",
  "_type": "type1",
  "_id": "1",
  "_version": 4,
  "found": true,
  "_source": {
    "counter": 5,
    "tags": [
      "red",
      "blue"
    ],
    "new_field": "value_of_new_field"
  }
}

ES中删除某个字段

POST test/type1/1/_update
{
    "script" : "ctx._source.remove('new_field')"
}

查看一下数据

{
  "_index": "test",
  "_type": "type1",
  "_id": "1",
  "_version": 5,
  "found": true,
  "_source": {
    "counter": 5,
    "tags": [
      "red",
      "blue"
    ]
  }
}

而且,我们甚至可以改变执行的操作: 如果标签字段包含蓝色,则此示例将删除该文档,否则它将不执行任何操作(noop)

POST test/type1/1/_update
{
    "script" : {
        "source": "if (ctx._source.tags.contains(params.tag)) { ctx.op = 'delete' } else { ctx.op = 'none' }",
        "lang": "painless",
        "params" : {
            "tag" : "blue"
        }
    }
}

查看一下数据

{
  "_index": "test",
  "_type": "type1",
  "_id": "1",
  "found": false
}

结语

🔥一个人可以掌握知识,但只有与他人交流才能形成智慧。
🔥One person can acquire knowledge, but wisdom is formed only in the exchange with others.
📝 欢迎大家关注博主公众号 Rockey小何同学 添加博主微信:he18339193956进群,一起学习,一起成长,一起提高认知。
🏆 我坚信人与人之间的差距是表面上是财富的差距,本质上是大脑中认知的差距,

我们下期再见。文章来源地址https://www.toymoban.com/news/detail-507285.html

到了这里,关于ES中更新字段和删除字段的操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • elasticsearch 更新字段或删除字段

    遇到问题: 项目新需求需要添加字段,中途确认好字段类型并准备开发,定义为text类型并更新到es中,突然产品又有需求调整,需要将类型设置为nested类型,查阅了好多资料,发现修改es字段数据类型和删除字段都没有详细介绍,请教了一下chartGPT和同事整理了一下自己的解决

    2024年02月13日
    浏览(33)
  • ES 旧表新增字段与删除字段

    注: ES新建库就是所谓的新建索引。一个索引不要采用删除后重建数据迁移的方法,数据量太大,会有服务中断时间。 在我们进行ES索引mapping结果修改后,已有数据是并没有改新增字段的 只有在查询新字段时,系统会根据新字段类型自动返回默认值或者空值

    2024年02月15日
    浏览(26)
  • es-删除字段-实测

    es字段一旦创建是无法删除的,本案的方案是复制新老索引的方法 现有索引 index1,待删除字段field1和extendMap.field2,es版本6.3.2 1、删除index1中的filed1和extendMap.field2两个字段的数据 2、新建index2,map中不要有上述待删除字段 3、拷贝index1到index2 4、删除index1 5、新建index1,map中不要

    2024年01月19日
    浏览(44)
  • ES中删除索引中某个字段

    ES中无法直接增删索引中的字段,只能能够覆盖,即重建新的索引 例:删除索引my_index中的source字段 先将source字段中的数据删除 否则后面reindex时,索引中会自动增加source字段和类型 创建新的索引my_index_bak,该mapping中不包含source字段 数据迁移 删除原来的索引 再重新创建索引

    2024年02月11日
    浏览(29)
  • ES(Kibana)更新指定字段值

    更新指定字段值,类似MySQL语句的update,ES中更新指定字段的值 具体语法如下: 示例如下: 更新test_index_update索引,_doc类型为doc,_id为12345,更新字段名称为field_test,更新后的值为field_value_test

    2024年02月11日
    浏览(40)
  • ES update_time 字段 更新时间

    search_key_word : time 写入精度 update_time 字段 更新时间 在 5.0 版本之前可以开启 _timestamp 元数据字段,会自动为文档添加一个时间戳,但此元数据字段已在 2.x 版本过时,5.x 版本移除 (release nodes) 在 5.x 及之后的版本中可以利用 pipeline 为文档写入 es 时添加一个时间戳字段来达到同

    2024年02月15日
    浏览(25)
  • es elasticsearch kibana 根据 id 只更新部分字段

    官方文档: https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-update.html#_update_part_of_a_document 给自己记录一下: 其中 test 是索引名,需要根据实际情况替换。_update 是固定值,表示更新文档。1 是想要更新文档的主键,根据实际情况替换。 “doc” 是固定值,“my_field_name” 是被

    2024年02月13日
    浏览(32)
  • ES 通过查询更新某个字段,Error 500 (Internal Server Error)

    问题描述: 项目中通过查询ES中某个字段,并更新某个值的字段,当量比较大的时候报错: upsert associated failed: elastic: Error 500 (Internal Server Error): Failed to compile inline script [ctx._source.pcap_filename = ] using lang [painless] [type=general_script_exception] 问题解析: 1. 通过查询某个字段并更新这

    2024年02月03日
    浏览(32)
  • 【Elasticsearch学习笔记二】es的Mapping字段映射、Mapping字段常用类型、Mapping映射的创建、查看和更新、es数据迁移、ik分词器

    目录 1、Mapping字段映射概述 2、Mapping字段常用类型 3、映射中对时间类型详解 1)采取自动映射器来映射 2)手工映射提前指定日期类型 4、ES的keyword的属性ignore_above 5、Mapping映射的查看和创建 1)查看mapping信息:GET 索引名/_mapping 2)创建映射:PUT /索引名 3) 查看所有索引映

    2024年01月20日
    浏览(48)
  • ES多个字段group by操作

    以下操作基于es6.8 这种方式查询出来的数据不是扁平化的,而是一层套一层的,比如字段一套字段二。 结果,one下面的buckets里面是two,每个two下面有自己的bukets,就是two的值和count。 封装一个通用的聚合查询并映射到java类中   这种方式查出来的数据更扁平化,容易被接受

    2024年02月15日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包