Обновить числовые и плавающие поля в клиенте elasticsearch

Я немного новичок в клиенте elasticsearch . Я не выполнял никаких предопределенных сопоставлений с каким-либо полем, потому что в будущем я могу добавить новое поле в документы. Мои данные выглядят так: -

      {
    "segmentId": "4700-b70e-881",
    "segmentName": "test",
    "data": "This is a test data",
    "dataId": "70897e86-9d69-4700-b70e-881a7f74e9f9",
    "augmented": false,
    "createdBy": {
        "email": "2010abinas@gmail.com",
        "primaryKey": "902d2b57-54e6",
        "secondaryKey": "adcc-f20423822c93"
    },
    "status": "active",
    "createdAt": 1617422043554,
    "updatedAt": 1617422043554
}

Я хотел обновить 3 поля, используя updateByQuery. Я пробовал подход ниже.

      await esClient.updateByQuery({
    index: "data",
    type: "doc",
    refresh: true,
    body:{
        query:{
            match: {
                dataId: "70897e86-9d69-4700-b70e-881a7f74e9f9"
            }
        },
        script:{
            lang:"painless",
            source:`ctx._source.data='This is updated test data';ctx._source.updatedAt=${Date.now()};ctx._source.segmentId=null`
        }
    }
})

Я получаю ошибку компиляции из-за updatedAt а также segmentId, Когда я передаю строку, она работает, например: -

      source:`ctx._source.data='This is updated test data';ctx._source.updatedAt='${Date.now()}';ctx._source.segmentId='null'`

Кто-нибудь, пожалуйста, помогите мне здесь, что мне не хватает, это было бы очень полезно.

Спасибо :)

1 ответ

Я нашел способ решить указанную выше проблему,

      await esClient.updateByQuery({
    index: "data",
    type: "doc",
    refresh: true,
    body:{
        query:{
            match: {
                dataId: "70897e86-9d69-4700-b70e-881a7f74e9f9"
            }
        },
        script:{
            lang:"painless",
            source:`ctx._source.data='This is updated test data';ctx._source.updatedAt=params.date;ctx._source.segmentId=params.segmentId`,
            params:{
                date: Date.now(),
                segmentId: null
            }
        }
    }
});
Другие вопросы по тегам