У вас, в колонке tags содержатся массивы целочисленных(на мой взгляд тип колонки выбран не удачно и лучше использовать array), а вы используете оператор поиска строки. Надо использовать оператор @> и искать пересечение массивов.
Пример:
CREATE TABLE aaa
(
id serial NOT NULL,
tags jsonb,
CONSTRAINT aaa_pk PRIMARY KEY (id)
);
-- Значения - integer
INSERT INTO aaa(tags)
VALUES ('[1, 2, 3]'::jsonb);
INSERT INTO aaa(tags)
VALUES ('[2, 4, 1]'::jsonb);
-- Пример для оператора ? , элемент "1" - строка
INSERT INTO aaa(tags)
VALUES ('[9, 9, "1"]'::jsonb);
-- ------------------------------------------
select * from aaa where tags @> '[1]'::jsonb;
-- OUTPUT:
-- id | tags
-- 1 | [1, 2, 3]
-- 2 | [2, 4, 1]
-- вывести записи где есть строка "1"
select * from aaa where tags ? '1';
-- OUTPUT:
-- id | tags
-- 3 | [9, 9, "1"]
Ссылка на документацию...