Schema reference

This document describes all searchable fields available in Content Advanced Search, their data types, and supported operators.

Field types

TypeDescriptionSupported Operators
textAnalysed text field, tokenised for full-text searchtext, phrase, prefix, exists
keywordExact-value string field, not analysedequal, in, prefix, range, exists
booleanTrue/false valueequal, in, exists
numberNumeric value (integer or float)equal, in, range, exists
dateDate/time valueequal, range, exists
nestedNested object requiring the nested operator for multi-field queriesnested (wraps other operators)

Note: Many fields support both text and keyword types. The appropriate type is automatically selected based on the operator used:

  • Full-text operators (text, phrase) use the analysed text field
  • Exact-match operators (equal, in) use the keyword field

Top-level fields

FieldType(s)Description
idkeywordUnique article identifier
slugkeywordURL-friendly article slug
languagekeywordArticle language code (e.g., en, es, fr)
publishDatedatePublication date and time
pinnedbooleanWhether the article is pinned/featured
singlePagebooleanWhether the article is a single page
readTimeMinutesnumberEstimated reading time in minutes
tagstext, keywordArticle tags

Hero media fields

Fields under the heroMedia object describe the article's primary media (featured image, video, etc.).

FieldType(s)Description
heroMedia.titletext, keywordMain headline displayed with the article
heroMedia.summarytext, keywordShort description or subheading
heroMedia.contentTypekeywordMedia type (e.g., image, video)
heroMedia.sourceSystemkeywordOrigin system (e.g., DAM, GETTY)
heroMedia.sourceSystemIdkeywordID in the origin system

Author fields

Fields under the author object.

FieldType(s)Description
author.nametext, keywordFull name
author.titletext, keywordJob title or role (e.g., Sports Editor)
author.imageUrlkeywordProfile picture URL

Content fields

Fields under the content array. Each article can have multiple content blocks.

FieldType(s)Description
content.texttext, keywordMain body text
content.titletext, keywordBlock heading
content.contentTypekeywordBlock type (e.g., TEXT, VIDEO, CUSTOM)
content.contenttext, keywordRaw content
content.altTexttext, keywordAccessibility text for media
content.idkeywordUnique block identifier
content.sourceSystemkeywordOrigin system for embedded media
content.sourceSystemIdkeywordID in the origin system
content.tagstext, keywordBlock-level tags
content.platformskeywordTarget platforms (e.g., web, app)
content.isHtmlbooleanRaw HTML content flag
content.openInNewTabbooleanExternal link behaviour
content.customContentTypekeywordCustom block type identifier
content.customContentKeykeywordCustom block key
content.customContentVersionnumberCustom block version

Categories fields

Nested object. Use the nested operator when querying multiple fields together.

FieldType(s)Description
categories.idkeywordUUID identifier
categories.texttext, keywordDisplay name (e.g., Premier League)

Display category fields

The primary category shown in the UI.

FieldType(s)Description
displayCategory.idkeywordUUID identifier
displayCategory.texttext, keywordDisplay name

Linked IDs fields

Nested object linking articles to external entities. Use the nested operator when querying multiple fields together.

FieldType(s)Description
linkedIds.sourceSystemkeywordExternal system (e.g., OPTA_FOOTBALL_TEAM, OPTA_FOOTBALL_PLAYER)
linkedIds.sourceSystemIdkeywordEntity ID in that system (e.g., t100)
linkedIds.texttext, keywordHuman-readable label

Sponsors fields

FieldType(s)Description
sponsors.texttext, keywordSponsor name
sponsors.imageUrlkeywordLogo URL
sponsors.linkUrlkeywordClick-through URL

Nested objects

The following fields are nested objects that support dynamic/custom properties:

FieldDescription
customContentCustom content properties at the article level
content.childrenNested child content blocks
content.customContentCustom content properties within content blocks

When querying nested objects with multiple conditions that must match the same nested document, use the nested operator. See Nested operator for details.

Examples

Search by title

{
  "query": {
    "text": {
      "query": "championship",
      "path": "heroMedia.title"
    }
  }
}

Filter by category

{
  "query": {
    "equal": {
      "path": "categories.id",
      "value": "550e8400-e29b-41d4-a716-446655440000"
    }
  }
}

Filter by linked entity

{
  "query": {
    "nested": {
      "path": "linkedIds",
      "query": {
        "compound": {
          "filter": [
            {
              "equal": {
                "path": "linkedIds.sourceSystem",
                "value": "OPTA_FOOTBALL_TEAM"
              }
            },
            {
              "equal": {
                "path": "linkedIds.sourceSystemId",
                "value": "t100"
              }
            }
          ]
        }
      }
    }
  }
}

Filter by date range

{
  "query": {
    "range": {
      "path": "publishDate",
      "gte": "now-7d",
      "lte": "now"
    }
  }
}

Filter by pinned status

{
  "query": {
    "equal": {
      "path": "pinned",
      "value": true
    }
  }
}