Сценарий Elasticsearch: не удалось добавить новый массив - PullRequest
0 голосов
/ 05 июня 2019

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

Вот документ, который нужно обновить

"_source": {
  "a": {}
}

Я хочу добавить новыймассив б под.Итак, у меня есть этот сценарий

{
  "script": {
    "source": "ctx._source.a.b=[params.id]",
    "lang": "painless",
    "params": {
      "id": "id001"
    }
  }
}

Но я получил ошибку ниже

{
    "status": 400, 
    "error": {
        "root_cause": [
            {
                "reason": "object mapping for [a.b] tried to parse field [null] as object, but found a concrete value", 
                "type": "mapper_parsing_exception"
            }
        ], 
        "type": "mapper_parsing_exception", 
        "reason": "object mapping for [a.b] tried to parse field [null] as object, but found a concrete value"
    }
}

Я попытался создать пустой массив с помощью

"ctx._source.a.b=new ArrayList()"

И затем добавить элемент кмассив

"ctx._source.a.b.add(params.id)"

По-прежнему получена та же ошибка

Может кто-нибудь помочь мне указать, в чем проблема?Большое спасибо.

1 Ответ

0 голосов
/ 06 июня 2019

Нашли основную причину. a.b определен в отображениях индекса, потому что я определил его раньше. Думал, что поле затем удаляется из документа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...