Про науку  Про жизнь  Про IT  Про спорт  Про книги  Разное

Проекты: Эйнштейны

Использование полей с экранируемыми символами в 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'] = 'Талахский горизонт'"
  }
}
Отправить
Поделиться