Data models
P4 Search uses data models to define how different information from P4 Server is indexed and stored in Elasticsearch.
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 ID. For example, for an AssetModel document, the ID might be asset-//depot/dam/Music Loops/License.txt#1.
You can do 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
On this page:
ChangeModel
One instance of the ChangeModel represents a single change in the P4 Server. The following attributes are stored in Elasticsearch:
| Name | Description | Type |
|---|---|---|
| type | Fixed string "change" | String |
| change | P4 Server change number | Long |
| date | Change date | Long |
| client | P4 Server client name | String |
| user | P4 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 the ContentModel represents the contents of a single changed file in the P4 Server. The following attributes are stored in Elasticsearch:
| Name | Description | Type |
|---|---|---|
| type | Fixed string "content" | String |
| depotFile | Depot file path | String |
| rev | P4 Server revision number | Integer |
head
|
true if the revision is the head revision |
Boolean |
| change | P4 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. To learn more about file types, see File Types in the P4 CLI Reference | String |
| action | P4 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 |
TagModel
One instance of the TagModel represents a single instance of an auto-detected tag on a file in the P4 Server. The following attributes are stored in Elasticsearch:
| 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> |
AssetModel
One instance of the AssetModel represents a P4 DAM asset in the P4 Server. The following attributes are stored in Elasticsearch:
| Name | Description | Type |
|---|---|---|
| type | Fixed string "asset" | String |
| depotFile | Depot file path | String |
| fileName | File name | String |
| rev | P4 Server revision number | Integer |
| head | true if the revision is the head revision | Boolean |
| 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 |
| change | P4 Server change number | Long |
| date | Change date | Long |
| user | User that submitted the change | String |
| fileSize | File size in bytes | Long |
| digest | MD5sSum of content | String |
| fileType | File type | String |
| action | P4 Server action, for example: add and edit | String |
| 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 |
| dimension | 2D image pixel data | PixelModel |
| sceneStats | 3D model scene data | SceneStatsModel |
GpsModel
To view example queries, see Example queries (EXIF data).
One instance of the GpsModel represents one GPS location of a file's content in the P4 Server. The following attributes are stored in Elasticsearch:
| Name | Description | Type |
|---|---|---|
| location | Elasticsearch compatible location. See Location | Location |
| altitude | Altitude in meters | Double |
| bearing | Bearing in degrees from north | Double |
Location
Location is part of GpsModel. One instance of the Location represents one latitude/longitude location. The following attributes are stored in Elasticsearch:
| Name | Description | Type |
|---|---|---|
| lat | Latitude in decimal | Double |
| lon | Longitude in decimal | Double |
PixelModel
One instance of the PixelModel represents an image's pixel data. The following attributes are stored in Elasticsearch:
| Name | Description | Type |
|---|---|---|
| width | Width in pixels | Integer |
| height | Height in pixels | Integer |
| total | Total pixel count | Integer |
pwr2
|
true if the height and width are powers of 2 | Boolean |
totalFrames
|
Total frames in a video | Long |
duration
|
Duration of a video in milliseconds | Long |
SceneStatsModel
One instance of the SceneStatsModel represents a 3D model's statistics. The following attributes are stored in Elasticsearch:
| Name | Description | Type |
|---|---|---|
| edges | Number of edges in all mesh objects | Long |
| faces | Number of faces (polygons) in all mesh objects | Long |
| objects | Number of objects in the scene | Long |
triangles
|
Number of triangles in all mesh objects | Long |
vertices
|
Number of vertices in all mesh objects | Long |
animations
|
Number of animations in the scene | Long |
armatures
|
Number of armatures in the scene | Long |
materials
|
Number of materials in the scene | Long |
meshes
|
Number of meshes in all objects | Long |
textures
|
Number of all textures in the scene | Long |
uv_maps
|
Number of UV maps in the scene | Long |
(Deprecated) RevisionModel
One instance of the RevisionModel represents a single revision of a file in the P4 Server. The following attributes are stored in Elasticsearch:
| Name | Description | Type |
|---|---|---|
| type | Fixed string "revision" | String |
| change | P4 Server change number | Long |
| date | Change date | Long |
| depotFile | Depot file path | String |
| action | P4 Server action, for example: add and edit | String |
| fileType | File type, for example: text, binary, symlink, unicode, utf8, utf16. To learn more about file types, see File Types in the P4 CLI Reference | String |
|
|
P4 Server revision number | Integer |
|
fileName |
File name | String |
|
|
File size in bytes | Long |
|
|
An MD5 digest of the file represented by a 32 hexadecimal digit string | String |
|
|
User that submitted the change | String |