En PostgreSQL 9.3 Beta 2 (?), ¿Cómo creo un índice en un campo JSON? Lo probé usando el ->operador utilizado para hstorepero obtuve el siguiente error:
CREATE TABLE publishers(id INT, info JSON);
CREATE INDEX ON publishers((info->'name'));
ERROR: el tipo de datos json no tiene una clase de operador predeterminada para el método de acceso "btree" SUGERENCIA: Debe especificar una clase de operador para el índice o definir una clase de operador predeterminada para el tipo de datos.

Respuestas:
Encontró:
Como se indica en los comentarios, la sutil diferencia aquí es en
->>lugar de->. El primero devuelve el valor como texto, el segundo como un objeto JSON.fuente
->>lugar de->. El primero devuelve el valor como texto, el último devuelve un objeto JSON.TEXT, sin embargo. Si usted quiere hacer comparaciones enteros en lugar de comparaciones de cadenas, hay que añadir un reparto:((info->>'name')::INT).create index idx_name on table_name ((json_column->'child_obj'->>'child_obj_field'));Primero debemos usarlo->para obtener el objeto JSON y luego->>para obtener el valor del objeto secundario como texto.