Open Source · Extension development and data integration

CKAN: structured metadata and separate indexing flows

Extension developer and custom metadata-indexing contributor

I developed ckanext-jsonschema for richer metadata forms, validation and Solr indexing. My wider work includes technical leadership of FAO’s ISO metadata catalogue and a separate custom Eventarc indexing integration with Elasticsearch, Solr and object storage.

Problem: rich metadata in a catalog built around simpler fields

Geospatial and other domain metadata can contain nested structures, schema-specific fields and validation rules. A catalog needs a usable editing experience and a way to discover the resulting records without flattening away their meaning.

The public extension addresses that CKAN metadata problem. The separate multi-destination event design addresses propagation to additional representations. They are related concerns, but the extension repository does not establish that it implements the external pipeline.

Architecture: the public extension’s documented surface

The public repository’s extra branch describes JSON Schema metadata types stored with CKAN extra fields, a JSON Editor interface and validation. It also documents schema registries, import/export, cloning and related metadata functions.

Solr projection fields support schema-related resource/view metadata, and the documented view search concerns public metadata. This is evidence for the extension’s CKAN/Solr feature set; it is not proof of a particular CKAN callback or database commit hook.

CKAN extension and documented Solr projection

The public extension boundary includes structured metadata editing and validation plus its documented Solr projection. CKAN stores the metadata; Solr serves a derived discovery representation. The arrow into Solr is labeled as a documented projection, without claiming an inspected commit hook or delivery guarantee.

Open full-size SVG
CKAN · structured metadata, discoverable projectionJSON Editor and JSON Schema validation extend CKAN metadata. The extension documents CKAN extra-field storage and a Solr projection for resource and view metadata, with public view search. CKAN · structured metadata, discoverable projection Public ckanext-jsonschema feature set · extra branch README EDITOR AND SCHEMA RESPONSIBILITY Public extension scope Metadata editor JSON Editor interface Schema registry Types and validation Metadata tools Import / export / clone validate tools CKAN DATA OWNERSHIP Structured metadata retained with catalog records Dataset / resource / view CKAN metadata entities Extra fields Schema type + JSON metadata validated data store SOLR PROJECTION Derived discovery; not canonical metadata ownership Solr schema fields Public view search Search clients index query search The README establishes a Solr projection, not an inspected CKAN callback or commit/delivery contract. Eventarc, Elasticsearch and the external object-storage design are separate from this extension boundary. EDITOR AND SCHEMA RESPONSIBILITY Public extension scope CKAN DATA OWNERSHIP Structured metadata retained with catalog records SOLR PROJECTION Derived discovery; not canonical metadata ownership Request / integration Message / asynchronous work Persistence / data access

Decisions: separate provenance from a plausible architecture

Separately, I implemented a custom metadata indexer with Eventarc and destinations in Elasticsearch, Solr and object storage. The integration overview shows my implementation account alongside the public extension. The public README does not establish the external publisher, authoritative record or purpose of the bucket.

Google’s Eventarc Standard documentation specifies at-least-once delivery and no FIFO ordering guarantee. Therefore duplicate and stale-event handling are requirements to examine, not capabilities to assume were already implemented in this integration.

For a retrospective design review, I would compare a stable versioned snapshot event with an event that contains only an entity reference. A snapshot improves repeatable replay but can spread stale or private data; a reference reduces payload duplication but requires source availability and a clear version policy.

Idempotent destination updates, visibility-change removal, replay and reconciliation are sensible reliability controls to evaluate. They are presented as review considerations, not as fabricated historical implementation details.

Custom metadata indexing integration

A metadata publisher sends change events through Eventarc to a custom metadata indexer, which updates configured Elasticsearch, Solr and object-storage destinations. This overview is grounded in my contribution account. The exact publisher, authority and replay implementation are not established by the extension README.

Open full-size SVG
CKAN · the separately described integrationThe candidate account describes a separate Eventarc integration serving Elasticsearch, Solr and object storage. Exact event source, authoritative record and bucket role are unverified; no outbox or reconciliation implementation is asserted. CKAN · the separately described integration Separate Eventarc integration · based on my contribution account SOURCE BOUNDARY Metadata change publication Metadata publisher Source integration unspecified Eventarc At-least-once; no FIFO guarantee change event CUSTOM INDEXING RESPONSIBILITY Implemented separately from the public extension Custom metadata indexer Update configured destinations event delivery CONFIGURED DESTINATIONS Search and object-storage targets Elasticsearch Solr Object storage update target update target update target Integration scope comes from my account. The extension README documents the CKAN / Solr feature separately. Exact source authority, event versioning, replay and deletion behavior require implementation-specific review. SOURCE BOUNDARY Metadata change publication CUSTOM INDEXING RESPONSIBILITY Implemented separately from the public extension CONFIGURED DESTINATIONS Search and object-storage targets Request / integration Message / asynchronous work Persistence / data access

Outcomes: a public extension with visible scope

The repository documents a substantial metadata extension and Solr-based view-search behavior. My public CKAN discussion describes releasing it with ISO metadata work and import/export/clone/validation/indexing functions.

I lead the technical work on FAO’s ISO metadata catalogue, associated with data.fao.org and the agro-informatics portal and supporting a broad range of FAO projects. I also participated in ISO 19115-4 standardization work. The companion AIP catalogue case explains that institutional context alongside the separate STAC discovery lane.

The external pipeline is documented separately through my implementation account. Neither the README nor that account establishes operational volume, index freshness, an availability target or a production reliability result.

Learning: every projection needs a reason to exist

An architecture drawing becomes useful when it can say why each destination exists, who owns the canonical record and what happens when visibility changes. Adding a bucket and two search engines does not answer those questions by itself.

This case preserves the gap rather than inventing a precise event envelope or integration hook. The next step for a deeper review is to trace one real update and one delete through each destination, then test replay and stale-event behavior.

Questions & discussion

Does ckanext-jsonschema implement Eventarc or Elasticsearch?

The public README documents CKAN metadata and Solr indexing. I implemented the Eventarc/Elasticsearch/object-storage integration separately; those services are not features established by the public extension repository.

Read the relevant section
Which destination is authoritative?

CKAN metadata is the source within the extension diagram. The separate pipeline’s authority and bucket role require confirmation. Search projections should not silently become authority merely because they are convenient to query.

Read the relevant section
How would you review ordering and duplicates?

Start from Eventarc’s at-least-once, unordered delivery. Inspect the actual event identity/version and destination update behavior. Version checks and idempotent writes are proposed review criteria until their implementation is established.

Read the relevant section

Sources & scope