ElasticSearch _update_by_query

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

根据查询条件进行数据更新

UPDATE job_call SET admin_id = 0 WHERE admin_id = 283;

ElasticSearch _update_by_query,elasticsearch,大数据

kibana.png

1.其中红色框的位置为query的内容,对应为SQL语句中的WHERE admin_id = 283
2.划红色线的位置为修改内容,对应SQL中的SET admin_id = 0。如果是更新多个字段source的值则为

ctx._source['admin_id'] = 0;ctx._source['time'] = 1603282909;
  • 注:source也可以为传递参数的形式进行更新↓
{
    "source": "ctx._source.admin_id = params.admin_id",
    "params": {
      "admin_id": 0
}
为已存在索引新增字段给默认值

为不含有sort_time的数据赋值为这条数据update_time
MySQL就类似于:UPDATE zhaogong_resume SET sort_time = update_time WHERE sort_time is null ;

POST /zhaogong_resume/_update_by_query

{
  "query": {
    "bool": {
      "must_not": [
        {
          "exists": {
            "field": "sort_time"
          }
        }
      ]
    }
  },
  "script": {
    "source": "ctx._source['sort_time'] = ctx._source['update_time']"
  }
}
计算查询更新(script

这是一个简单的script查询

{
  "query": {
    "bool": {
      "must": [
        {
          "script": {
            "script": {
              "source": "doc['sort_time'].value - doc['time'].value == 19992561"
            }
          }
          //....这里可多个script同级
        }
      ]
    }
  }
}

假设MySQL语句为:update zhaogong_resume set username = 'liubo' where (sort_time - time = 19992561)

POST /zhaogong_resume/_update_by_query

{
  "query": {
    "bool": {
      "must": [
        {
          "script": {
            "script": {
              "source": "doc['sort_time'].value- doc['time'].value == 19992561"
            }
          }
        }
      ]
    }
  },
  "script": {
    "source": "ctx._source.username = params.username",
    "params": {
      "username": "liubo"
    }
  }
}
ElasticSearch对 script结构体定义变量,对变量进行操作。_update_by_query
{
    "query": {
        "bool": {
            "must": [{
                "term": {
                    "id": 1273
                }
            }]
        }
    },
    "script": {
        "source": "def province_array = [ctx._source['province']] ;ctx._source['province'] = province_array; def city_array = [ctx._source['city']] ;ctx._source['city_arr'] = city_array;"

    }
}



作者:青山淼淼
链接:https://www.jianshu.com/p/c57404a58626
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。文章来源地址https://www.toymoban.com/news/detail-791761.html

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

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

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

相关文章

  • 启动ElasticSearch报错:error updating geoip database

    启动ElasticSearch报错: error updating geoip database 这是一个bug 在elasticsearch.yml中添加如下配置: 关闭geoip数据库的更新

    2024年02月15日
    浏览(39)
  • Elasticsearch Document Update API详解、原理与示例

    private int retryOnConflict = 0:更新冲突时重试次数。 private RefreshPolicy refreshPolicy = RefreshPolicy.NONE:刷新策略。NONE:代表不重试; private ActiveShardCount waitForActiveShards = ActiveShardCount.DEFAULT:执行操作之前需要等待激活的副本数,已在《Elasticsearch Document Get API详解、原理与示例》中详

    2024年04月22日
    浏览(39)
  • Elasticsearch 索引文档时create、index、update的区别【学习记录】

    本文基于elasticsearch7.3.0版本。 一、思维导图 elasticsearch中create、index、update都可以实现插入功能,但是实现原理并不相同。 二、验证index和create 由上面思维导图可以清晰的看出create、index的大致区别,下面我们来验证下思维导图中的场景: 1、首先明确一点:如何指定是creat

    2024年01月20日
    浏览(45)
  • Elasticsearch Java API 的使用-更新索引(update & upset)与 Bulk的批量更新

    Java更新索引(update upset) update 更新使用UpdateRequest(update类型更新,只能更新) upset 要用IndexRequest设定添加文档,UpdateRequest设定更新文档,设定upset执行有则修改无则更新(upset类型更新,文档不存在时创建) 基于Bulk的批量更新(update upset) 动态的更新一个 documents 中的任

    2024年02月11日
    浏览(49)
  • Elasticsearch增删改查、count、sum、group by、order by、like

    1、查找所有索引 2、查询 3、count 4、查询SQL:

    2024年02月16日
    浏览(43)
  • elasticsearch的group by分组和sum求和

    最近在使用es查询某个字段在特定查询条件下的某个字段的求和时,忘记了query语句是怎么写的,简单记录一下,方便自己和他人查阅。 一 什么是elasticsearch? elasticsearch是一个分布式的使用 REST 接口的搜索引擎,简称为ES,它是面向文档的,可以存储整个对象或文档。 二:

    2024年02月12日
    浏览(40)
  • 解决Elasticsearch Connection reset by peer异常

    随着ES的密集使用,线上环境,不同应用最近几天陆续有报java.io.IOException: Connection reset by peer异常,感觉不太正常。直接影响就是用户查询或者变更ES数据失败。 首先网上查了一番并结合源码分析,与Es的RestHighLevelClient的KeepAlive(最小空闲时间)有关,KeepAlive默认值是-1,长连

    2024年01月25日
    浏览(42)
  • elasticsearch文档Delete By Query API(一)

    如果只是想计算版本冲突而不是让它们中止,那么可以设置在URL中添加conflicts=proceed参数,或者在请求体中设置  \\\"conflicts\\\":\\\"proceed\\\" 。 开发者可以将  _delete_by_query 限制为单一类型,例如如下请求,将会从  twitter 索引中删除  _doc 类型的文档: curl -X POST “localhost:9200/twitter/_

    2024年03月27日
    浏览(44)
  • Elasticsearch按某个字段去重-实现group by效果

    已知es中存储了一张学生课程信息宽表,里边包含有student_name、student_id、teacher_id、课程信息等字段。 现在根据学生姓名或者班级ID,得出学生所在班级的所有授课教师信息。  既然是明细宽表,里边的教师的信息必然是有重复的,因此我们需要查询teacher_id的集合并去重,对

    2024年02月12日
    浏览(43)
  • ElasticSearch删除索引中的数据(delete_by_query)

    在 Elasticsearch 中,要删除两个月以前的数据,可以通过以下步骤: 计算当前时间的两个月前的日期,可以使用 Python 的 datetime 模块来实现。 构造 Elasticsearch 的删除请求,使用 Elasticsearch-Py 库来与 Elasticsearch 进行交互。         这样就可以删除索引中两个月以前的数据。需

    2024年02月04日
    浏览(47)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包