Использование полей с экранируемыми символами в Elasticsearch
Если в наименовании полей индекса используются экранируемые символы, например, такие как ’:’, то при обращении к ним напрямую Elasticsearch вернет ошибку.
Вот такое обращение:
...
ctx._source.petrel:ProjectName = ...
...вызовет ошибку с сообщением типа:
"unexpected token"Для преодоления такого поведения нужно обратиться к полю через специальную переменную _source и передать наименование поля:
_source['petrel:ProjectName']Во пример запроса на обновление текстового поля с условием:
POST petrel/_update_by_query
{
"query": {
"match_phrase": {
"petrel:ProjectName": "Талахский гоизонт"
}
},
"size": 10000,
"script": {
"source": "ctx._source['petrel:ProjectName'] = 'Талахский горизонт'"
}
}