У меня довольно сложный JSONB, хранящийся в одном столбце jsonb
.
Таблица DB выглядит так:
CREATE TABLE sites (
id text NOT NULL,
doc jsonb,
PRIMARY KEY (id)
)
Данные, хранящиеся в столбце doc
, представляют собой сложные вложенные данные jsonb
:
{
"_id": "123",
"type": "Site",
"identification": "Custom ID",
"title": "SITE 1",
"address": "UK, London, Mr Tom street, 2",
"buildings": [
{
"uuid": "12312",
"identification": "Custom ID",
"name": "BUILDING 1",
"deposits": [
{
"uuid": "12312",
"identification": "Custom ID",
"audits": [
{
"uuid": "12312",
"sample_id": "SAMPLE ID"
}
]
}
]
}
]
}
Итак, структура моего jsonb
выглядит так:
SITE
-> ARRAY OF BUILDINGS
-> ARRAY OF DEPOSITS
-> ARRAY OF AUDITS
Нам нужно реализовать полнотекстовый поиск по некоторым значениям в каждом типе записи:
SITE (identification, title, address)
BUILDING (identification, name)
DEPOSIT (identification)
AUDIT (sample_id)
SQL-запрос должен запускать полный текстовый поиск только в этих значениях поля.
Мне кажется, нужно использовать индексы GIN
и что-то вроде tsvector
, но не достаточно фона Postgresql.
Итак, мой вопрос заключается в возможности индексировать и затем запрашивать такие вложенные структуры jsonb
?