您当前的位置: 首页 > 

宝哥大数据

暂无认证

  • 1浏览

    0关注

    1029博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

ES: update by query

宝哥大数据 发布时间:2022-10-15 09:30:11 ,浏览量:1

文章目录
    • _update_by_query 的应用场景
    • 造数据
    • 1、修改一个字段的值
    • 2、 给es里某个字段增加一个子类型,要求之前的数据也能被查询到

es 版本为7.9.3

_update_by_query 的应用场景
  • 1、修改一个字段的值
  • 给es里某个字段增加一个子类型,要求之前的数据也能被查询到
造数据
POST test
{
  "mappings" : {
      "properties" : {
        "name" : {
          "type" : "text",
          "fields" : {
            "keyword" : {
              "type" : "keyword",
              "ignore_above" : 256
            }
          }
        }
      }
    }
}


POST test/_doc/1
{
  "name": "chb",
  "age": "20"
}

POST test/_doc/2
{
  "name": "ling",
  "age": 18
}

POST test/_doc/3
{
  "name": "旺仔",
  "age": 1
}

POST test/_doc/4
{
  "name": "李四"
}


1、修改一个字段的值
# 修改李四的年龄为44
POST test/_update_by_query
{
  "script": {
    "source": "ctx._source.age = 44",
    "lang": "painless"
  },
  "query": {
    "bool": {
      "must_not": [
        {
          "exists": {
            "field": "age"
          }
        }
      ]
    }
  }
}

在这里插入图片描述

2、 给es里某个字段增加一个子类型,要求之前的数据也能被查询到

修改mapping,添加一个子字段

POST test/_mapping
{
  "properties": {
    "name": {
      "type": "text",
      "fields": {
        "keyword": {
          "type": "keyword",
          "ignore_above": 256
        },
        "ik_smart": {
          "type": "text",
          "analyzer": "ik_smart"
        }
      }
    }
  }
}

插入一条新的数据

PUT test/_doc/5
{
  "name": "王五",
  "age": 35
}

查询 李四,王五,发现查不到李四



GET test/_search
{
  "query": {
    "match": {
      "name.ik_smart": "李四"
    }
  }
}

GET test/_search
{
  "query": {
    "match": {
      "name.ik_smart": "王五"
    }
  }
}

因为李四是 更改mapping之前插入,新增字段没有在老数据上生效,导致查询不出

为了之前的数据也能被查询到,我们通过 _update_by_query

POST test/_update_by_query

结果可以查询 在这里插入图片描述

关注
打赏
1587549273
查看更多评论
立即登录/注册

微信扫码登录

0.0398s