Helix Search Documentation | 2025.1

# Data model

This section details the three data models used by Helix Search.

Every data model document has a unique Elasticsearch document id (_id) in the format <type>-<depotFile>#<rev> except for the ChangeModel, which uses the format <type>-<changeNumber>; for its unique document id (_id).

For example, for an AssetModel document, id will be asset-//depot/dam/Music Loops/License.txt#1

You can perform a document look-up on Elasticsearch as follows:

GET http://localhost:9200/index-perforce1-000001/_doc/asset-%2f%2fdepot%2fmain%2fp4-perl%2fP4.pm%2329

The Elasticsearch document id (_id) can not be larger than 512 bytes.

## ChangeModel

One instance of this represents single change in the Helix Core Server.

Name | Description | Type
--- | --- | ---
type | Fixed string "change" | String
change | Helix Core Server change number | Long
`date` | Change date | Long
client | Helix Core Server client name | String
`user` | Helix Core Server user | String
`restricted` | Whether the change is restricted or not | Boolean
`description` | Change description | String
`depotFile` | Depot file path | String

## ContentModel

One instance of this represents contents of single changed file in the Helix Core Server:

Name | Description | Type
--- | --- | ---
`type` | Fixed string "content" | String
`depotFile` | Depot file path | String
`rev` | Helix Core Server revision number | Integer
`change` | Helix Core Server change number | Long
`date` | Change date | Long
`fileName` | File name | String
fileSize | File size in bytes | Long
`fileType` | File type, for example: text, binary, symlink, unicode, utf8, utf16. For more information on filetypes, see File Types in the Helix Core Command-Line (P4) Reference. | String
`action` | Helix Core Server action, for example: add and edit | String
`user` | User that submitted the change | String
`contentType` | Content type detected by the Tika library | String
`content` | The content of the file indexed by the Tika library, includes handwriting or any other text | String

## AssetModel

One instance of this represents a Helix DAM asset in the Helix Core Server:

Name | Description | Type
--- | --- | ---
type | Fixed string "asset" | String
depotFile | Depot file path | String
rev | Helix Core Server revision number | Integer
change | Helix Core Server change number | Long
date | Change date | Long
fileName | File name | String
fileSize | File size in bytes | Long
digest | MD5sSum of content | String
fileType | File type | String
action | Helix Core Server action, for example: add and edit | String
user | User that submitted the change | String
blur | The BlurHash for the image | String
blurSize | Blur pixel dimensions based on thumbnail/preview | String
`detected` | Auto-detected image tags. For <TagModel>, see TagModel. | List<TagModel>
`attributes` | List of 'key' and 'value' pair of tags | List<AttributeModel>
customAttributes | Array of 'uuid' and 'value' pairs | JsonArray
contentType | Content type detected by the Tika library | String
metadata | Metadata found by the Tika library, for example: EXIF metadata and more | Map<String, String>
gps | GpsModel data extracted from EXIF metadata, see GpsModel. | GpsModel

### TagModel

One instance of this represents a single instance of an auto-detected tag on a file in the Helix Core Server:

Name | Description | Type
--- | --- | ---
`tag` | Tag name | String
`confidence` | Confidence of detection (floating-point value from 0 to 1 where 1 represents 100%) | Float
`positions` | Optional: 1 or more x,y points locating the tag within the image. Stored as a floating-point value from top-left (0,0) to bottom-right (1,1) | List<Point2D.Float>

### GpsModel

To view example queries for EXIF data, see EXIF query examples .

One instance of this represents one GPS location of a file content in the Helix Core Server:

Name | Description | Type
--- | --- | ---
location | Elasticsearch compatible location, see Location. | Location
altitude | Altitude in meters | Double
bearing | Bearing in degrees from the north | Double

### Location

One instance of this represents one Longitude/Latitude location.

Name | Description | Type
--- | --- | ---
lat | Latitude in decimal | Double
lon | Longitude in decimal | Double

## (Deprecated) RevisionModel

From the Helix Search 2024.1 release, RevisionModel has been deprecated and it will no longer be indexed.

One instance of this represents single revision of a file in the Helix Core Server:

Name | Description | Type
--- | --- | ---
`type` | Fixed string "revision" | String
`change` | Helix Core Server change number | Long
`date` | Change date | Long
`depotFile` | Depot file path | String
`action` | Helix Core Server action,for example: add and edit | String
`fileType` | File type, for example: text, binary, symlink, unicode, utf8, utf16. For more information on filetypes, see File Types in the Helix Core Command-Line (P4) Reference. | String
`rev` | Helix Core Server revision number | Integer
fileName | File name | String
`fileSize` | File size in bytes | Long
`digest` | An MD5 digest of the file represented by a 32 hexadecimal digit string | String
`user` | User that submitted the change | String

Your search for returned results