簡體   English   中英

ElasticSearch =>如何使用update_by_query更新部分文檔

[英]ElasticSearch => How to updates with a partial document using update_by_query

我想更新我的名字為wang的索引中的數據。 我的索引代碼如下:

PUT index_c
{
   "mappings": {
      "_doc" : {
         "properties" : {
            "cid" : {
               "type" : "keyword"
            },
            "cname" : {
               "type" : "keyword"
            },
            "cage" : {
               "type" : "short"
            },
            "chome" : {
               "type" : "text"
            }
         }
      }
   }
}

我的更新請求如下:

POST index_c/_update_by_query
{
   "query" : {
      "match": {
        "cname": "wang"
      }
   },
   "doc" : {
      "cage" : "100",
      "chome" : "china"
   }
}

但是我遇到了這樣的錯誤:

{
  "error": {
    "root_cause": [
      {
        "type": "parsing_exception",
        "reason": "Unknown key for a START_OBJECT in [doc].",
        "line": 1,
        "col": 43
      }
    ],
    "type": "parsing_exception",
    "reason": "Unknown key for a START_OBJECT in [doc].",
    "line": 1,
    "col": 43
  },
  "status": 400
}

所以我想知道在使用“ update_by_query”時如何實現這一點

我認為這對您doc ,只需將script部分替換為doc部分。 如果inline顯示為您棄用 ,則只需使用source

POST index_c/_update_by_query
{
    "query" : {
      "match": {
        "cname": "wang"
      }
   },
   "script" : {
      "inline" : "ctx._source.cage='100'; ctx._source.chome= 'china';", 
      "lang"   : "painless"
   } 
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM