Как получить все записи с определенным значением в поле JSONB?
У вас,  в колонке 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"]Ссылка на документацию...
Забавно.
Пересечения работают, можно их использовать.select '[1,2,3]'::jsonb @> '[2]'::jsonb;