Search Integration - Content Management
Search Integration
Search Metadata via eSearch
Use KalturaESearchEntryMetadataItem to search entries by metadata field values:
curl -X POST "$KALTURA_SERVICE_URL/service/elasticsearch_esearch/action/searchEntry" \
-d "ks=$KALTURA_KS" \
-d "format=1" \
-d "searchParams[objectType]=KalturaESearchEntryParams" \
-d "searchParams[searchOperator][objectType]=KalturaESearchEntryOperator" \
-d "searchParams[searchOperator][operator]=1" \
-d "searchParams[searchOperator][searchItems][0][objectType]=KalturaESearchEntryMetadataItem" \
-d "searchParams[searchOperator][searchItems][0][searchTerm]=Engineering" \
-d "searchParams[searchOperator][searchItems][0][itemType]=1" \
-d "searchParams[searchOperator][searchItems][0][metadataProfileId]=$PROFILE_ID"
| Parameter | Type | Required | Description |
|---|---|---|---|
searchParams[objectType] | string | Yes | Always KalturaESearchEntryParams |
searchParams[searchOperator][objectType] | string | Yes | Always KalturaESearchEntryOperator |
searchParams[searchOperator][operator] | integer | Yes | 1=AND, 2=OR |
searchParams[searchOperator][searchItems][N][objectType] | string | Yes | KalturaESearchEntryMetadataItem for metadata search |
searchParams[searchOperator][searchItems][N][searchTerm] | string | Yes | Value to search for |
searchParams[searchOperator][searchItems][N][itemType] | integer | Yes | 1=EXACT_MATCH, 2=PARTIAL, 3=STARTS_WITH |
searchParams[searchOperator][searchItems][N][metadataProfileId] | integer | No | Scope search to a specific metadata profile |
searchParams[searchOperator][searchItems][N][xpath] | string | No | Target a specific field (e.g., /metadata/Department) |
Target a specific field using the xpath parameter:
-d 'searchParams[searchOperator][searchItems][0][xpath]=/metadata/Department'
Search item types (itemType): 1 = EXACT_MATCH, 2 = PARTIAL, 3 = STARTS_WITH
Searchable Fields
Fields with <searchable>true</searchable> in their <appinfo> annotation are indexed in eSearch and available for queries. Fields marked <searchable>false</searchable> (or without the annotation) are stored for retrieval via metadata.get and metadata.serve.
Indexing limit: Elasticsearch indexes up to 4 searchable Date fields and 4 searchable Integer fields per metadata profile. Fields beyond this limit are stored and retrievable via metadata.get, but only the first 4 of each type appear in eSearch results. Use text fields for dates and numbers that only need storage and retrieval.
Cross-Field Search
Combine metadata search with entry fields and caption text in a single eSearch query. See eSearch API for multi-item operator syntax.