首页 > 解决方案 > 如何在elasticsearch中更新没有ID条件的文档?

问题描述

我的目标是更新文档。

var elasticsearch = require('elasticsearch');
    var client = new elasticsearch.Client({
    host:"**************",
    log: 'trace',
});

"hits": [
{
    "_index": "fds",
    "_type": "_doc",
    "_id": "9560206-El-MOHABXh-qOCdi1FYN",
    "_score": 1.0,
    "_source": {
        "videoId": "El-MOHABXh-qOCdi1FYN",
        "mobile": "9560206",
        "name": "alexa",
        "choice": "like",
         "code": "+95",
        "lastUpdate": "2020-01-15T06:12:00.073Z"
    }
},
{
    "_index": "fds",
    "_type": "_doc",
    "_id": "9560206-SQENUHEBcYN_H8khsonC",
    "_score": 1.0,
    "_source": {
         "videoId": "El-MOHABXh-qOCdi1FYN",
        "mobile": "9560206",
        "name": "alexa",
        "choice": "like",
        "code": "+91",
        "lastUpdate": "2020-01-15T06:12:00.073Z"
    }
}]

我的问题是我们如何更新条件字段名称为videoIdmobilecode 的文档。 并更新字段名称为namechoice

假设我们有条件videoId": "El-MOHABXh-qOCdi1FYN", "mobile": "9560206""code": "+91"

标签: elasticsearchelasticsearch-5

解决方案


let inputData = {
    "script" : {
      "source": `ctx._source['name']='Apple'; 
      ctx._source['choice']='unlike'`
    },
    "query": {
      "bool": {
        "filter": [{
            "match": {
                "code":"+91"
            }
        },{
          "match": {
              "videoId": "El-MOHABXh-qOCdi1FYN"
          }},{
            "match": {
                "mobile": "9560206"
            }
        }]
      }
    }

}

 client.updateByQuery({
    index: indexname,
    type: '_doc',
    body: inputdata

})

推荐阅读