Как стать автором
Обновить

Комментарии 2

У меня вопросы про интеграцию PostgreSQL и ElasticSearch.


А как происходит маппинг полей из эластика в таблицу logging.requests постреса?
Автоматически или где-то настраивается?


Допустим есть такой формат документов в эластике:


{"positive_registries": [{"name": "Реестр надежных партнеров торгово-промышленной палаты РФ", "membership": false}, {"name": "Реестр победителей президентских грантов", "membership": false}, {"name": "Реестр микрофинансовых организаций", "membership": false}, {"name": "Реестр операторов персональных данных", "membership": false}, {"name": "Реестр туроператоров", "membership": false}], ...}

Можно будет как-то работать с вложенными объектами из массива?

Собственно говоря маппинг осуществляется в моменте создания таблицы, т.е. имена колонок в таблице должны в точности соответствовать полям в документе. В моём случае это были:

  ...
  id varchar(36),
  "@timestamp" timestamp with time zone,
  api varchar(36),
  "api-response-time" int,
  ...

Фрагмент документа

{"_id":"640171b5-****-****-****-b58126cdc736","_type":"_doc","_index":"gravitee-request-2021.06.28","sort":[1624900818020,101272],"subscription":"******-****-****-****-**********","request-content-length":0, ...}

В Вашем случае, скорее всего будет нечто вроде этого:

CREATE TABLE table_name (
"positive_registries"   jsonb[],
...

Ну а при select, уже будете работать с массивом json-ов.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории