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

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

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


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


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
}
相关文章
|
3月前
|
弹性计算 人工智能 运维
阿里云云监控对接使用完全指南:从入门到智能化运维
本文提供了一份完整的阿里云云监控(CloudMonitor 2.0)对接使用指南。作为融合了日志服务SLS、云监控CMS和应用实时监控服务ARMS的一站式可观测平台,云监控2.0提供了从基础设施到业务层的全栈监控能力。文章详细介绍了工作空间的创建与管理、接入中心的多源数据接入流程、告警规则与通知策略的配置方法、OpenAPI与SDK的调用示例、自定义监控数据上报方案,以及基于CLI和AI Agent Skill的智能化运维实践。同时涵盖了Prometheus集成、日志探索、仪表盘可视化等高级功能。通过本文,读者可以系统掌握云监控的对接使用技巧,构建高效、智能的可观测运维体系。
|
4月前
|
Prometheus 监控 前端开发
阿里云应用实时监控服务ARMS完全对接使用指南:从零构建全栈可观测体系
本文全面解析阿里云应用实时监控服务ARMS的对接与使用方法。从ARMS产品矩阵与服务开通入手,详细拆解接入中心统一接入流程,深入讲解Java应用通过探针无侵入接入、Python应用环境变量配置接入、Web前端通过CDN与npm方式接入等实战操作,并提供完整的代码示例与配置参数说明。系统阐述调用链采样策略、告警规则分层设计、统一告警管理、基于Grafana的自定义可观测大盘等高级功能。最后结合成本优化策略与常见问题排查,帮助读者构建从终端到后端、从基础设施到业务的全栈可观测体系。
|
传感器 监控 测试技术
Visual studio 2019常用快捷键_kaic
Visual studio 2019常用快捷键_kaic
|
7月前
|
人工智能 运维 监控
你的 AI Agent 真的在受控运行吗?
以 OpenClaw 为案例,从行业威胁态势与运行时防护的固有局限出发,系统拆解 AI Agent 可观测体系的设计方法论:通过 Session 审计日志、应用日志与 OpenTelemetry 遥测三条数据管道,构建行为审计、威胁检测、成本管控与运维观测的完整闭环。
你的 AI Agent 真的在受控运行吗?
|
IDE 开发工具 git
pycharm如何查看git历史版本变更信息
通过上述步骤,你可以在 PyCharm 中轻松查看 Git 的历史版本变更信息,无论是针对整个项目、特定文件还是分支。使用 PyCharm 的 Git 集成功能,可以更高效地管理和审查代码变更,提高开发过程的透明度和可维护性。
1593 19
|
负载均衡 监控 算法
【阿里二面面试题】说说你对 Raft 算法的理解?
【阿里二面面试题】说说你对 Raft 算法的理解?
1686 0
【阿里二面面试题】说说你对 Raft 算法的理解?
Java—多线程实现生产消费者
本文介绍了多线程实现生产消费者模式的三个版本。Version1包含四个类:`Producer`(生产者)、`Consumer`(消费者)、`Resource`(公共资源)和`TestMain`(测试类)。通过`synchronized`和`wait/notify`机制控制线程同步,但存在多个生产者或消费者时可能出现多次生产和消费的问题。 Version2将`if`改为`while`,解决了多次生产和消费的问题,但仍可能因`notify()`随机唤醒线程而导致死锁。因此,引入了`notifyAll()`来唤醒所有等待线程,但这会带来性能问题。
475 1
Java—多线程实现生产消费者
|
Web App开发 Linux iOS开发
Chrome浏览器如何导出所有书签并导入书签
【11月更文挑战第4天】本文介绍了如何在 Chrome 浏览器中导出和导入书签。导出时,打开书签管理器,点击“整理”按钮选择“导出书签”,保存为 HTML 文件。导入时,同样打开书签管理器,点击“整理”按钮选择“导入书签”,选择之前导出的 HTML 文件即可。其他主流浏览器也支持导入这种格式的书签文件。
13527 2
|
Web App开发 移动开发 iOS开发
input输入框的23中类型
input输入框的23中类型
620 1
|
Java
Error:(15, 13) java: No property named “id” exists in source parameter(s). Did you mean “null”?
Error:(15, 13) java: No property named “id” exists in source parameter(s). Did you mean “null”?
770 1

热门文章

最新文章