ElasticSearch 可以在update_by_query中使用doc修改部分文档吗

作者 wangjinhao | 发布于2018年10月10日 | 阅读数:155

我想修改我的索引中cid为c2的文档,修改cname、cage、chome三个字段,查询请求如下:
POST index_c/_update_by_query
{
"query" : {
"match": {
"cid": "c2"
}
},
"doc" : {
"cname" : "wang",
"cage" : "100",
"chome" : "china"
}
}
但是,ES似乎不支持这样的写法,返回如下错误
{
  "error": {
    "root_cause": [
      {
        "type": "parsing_exception",
        "reason": "Unknown key for a START_OBJECT in [doc].",
        "line": 1,
        "col": 39
      }
    ],
    "type": "parsing_exception",
    "reason": "Unknown key for a START_OBJECT in [doc].",
    "line": 1,
    "col": 39
  },
  "status": 400
}
我想知道,如何写可以实现上面的要求。
已邀请:

rochy - rochy_he@jointsky

赞同来自:

POST twitter/_update_by_query
{
"source": "ctx._source.cname = params.name;ctx._source.cage = params.age;ctx._source.chome = params.home",
"lang": "painless",
"params" : {
"name" : "wang",
"age": "100",
"home": "china"
},
"query": {
"match": {
"cid": "c2"
}
}
}

rochy - rochy_he@jointsky

赞同来自:

如果是修改特定 id 的文档,可以使用
POST twitter/doc/c2/_update
{
"doc" : {
"cname" : "wang",
"cage" : "100",
"chome" : "china"
}
}

要回复问题请先登录注册