我有一个nodejs应用程序,它调用ES的updateByQuery API,如下所示:

elasticsearchClient.updateByQuery({
            index: 'logstash-dev-2019.05.14',
            body: {
                "query": {
                    "ids": {
                        "values": alert.esId
                    }
                },
                "script": {
                    "source": `ctx._source.alertObject.violation_status = 'closed'`,
                    "lang": "painless"
                }
            }
        });

但是偶尔,我碰到version_conflict_engine_exception。我想通过使用documentation中提到的conflict=proceed来解决冲突。我在哪里适合我的更新电话?

最佳答案

您可以使用docs中提供的querystring对象,请滚动到链接的末尾。

elasticsearchClient.updateByQuery({
  index: 'logstash-dev-2019.05.14',
  querystring: {
    "conflict": "proceed"
  },
  body: {
    "query": {
      "ids": {
        "values": alert.esId
      }
    },
    "script": {
       "source": `ctx._source.alertObject.violation_status = 'closed'`,
       "lang": "painless"
    }
  }
});

09-25 16:11