Skip to main content
View as Markdown

Capabilities & Scenarios (with Curl Examples) - Content Management

Capabilities & Scenarios (with Curl Examples)​

Examples pipe to jq for readability.

A. Basic Unified Keyword Search with Highlighting

  • Goal: Find entries matching "visual studio code" anywhere, show highlights.
  • Capability: Unified search, Highlighting, Partial/Synonym matching.
  • Curl:
    curl -X POST "$KALTURA_SERVICE_URL/service/elasticsearch_esearch/action/searchEntry" \
    -d "ks=$KALTURA_KS" \
    -d "searchParams[searchOperator][searchItems][0][objectType]=KalturaESearchUnifiedItem" \
    -d "searchParams[searchOperator][searchItems][0][searchTerm]=visual studio code" \
    -d "searchParams[searchOperator][searchItems][0][itemType]=2" \
    -d "searchParams[searchOperator][searchItems][0][addHighlight]=true" \
    -d "searchParams[searchOperator][objectType]=KalturaESearchEntryOperator" \
    -d "searchParams[objectType]=KalturaESearchEntryParams" \
    -d "format=1" | jq .

Response:

{
"totalCount": 42,
"objects": [
{
"object": { "id": "1_abc123", "name": "...", "objectType": "KalturaMediaEntry" },
"highlight": [{ "fieldName": "name", "hits": "<em>search term</em> in title" }],
"itemsData": [...]
}
],
"objectType": "KalturaESearchEntryResponse"
}

B. Field-Specific Search (Entry Name, Starts With)

  • Goal: Find entries where the name starts with "AI Hacker".
  • Capability: Field-specific search, Starts With matching.
  • Curl:
    curl -X POST "$KALTURA_SERVICE_URL/service/elasticsearch_esearch/action/searchEntry" \
    -d "ks=$KALTURA_KS" \
    -d "searchParams[searchOperator][searchItems][0][objectType]=KalturaESearchEntryItem" \
    -d "searchParams[searchOperator][searchItems][0][searchTerm]=AI Hacker" \
    -d "searchParams[searchOperator][searchItems][0][itemType]=3" \
    -d "searchParams[searchOperator][searchItems][0][fieldName]=name" \
    -d "searchParams[searchOperator][objectType]=KalturaESearchEntryOperator" \
    -d "searchParams[objectType]=KalturaESearchEntryParams" \
    -d "format=1" | jq .

C. Multi-Language Caption Search

  • Goal: Find entries with the Chinese word 食谱 ("recipe") in captions.
  • Capability: Multi-language, Field-specific search.
  • Curl:
    curl -X POST "$KALTURA_SERVICE_URL/service/elasticsearch_esearch/action/searchEntry" \
    -d "ks=$KALTURA_KS" \
    -d "searchParams[searchOperator][searchItems][0][objectType]=KalturaESearchCaptionItem" \
    -d "searchParams[searchOperator][searchItems][0][searchTerm]=食谱" \
    -d "searchParams[searchOperator][searchItems][0][itemType]=2" \
    -d "searchParams[searchOperator][searchItems][0][fieldName]=content" \
    -d "searchParams[searchOperator][searchItems][0][addHighlight]=true" \
    -d "searchParams[searchOperator][objectType]=KalturaESearchEntryOperator" \
    -d "searchParams[objectType]=KalturaESearchEntryParams" \
    -d "format=1" | jq .

D. Custom Metadata Search (Specific Field)

  • Goal: Find entries where metadata profile ID 653 has the field /metadata/Field1 exactly matching "recipe".
  • Capability: Metadata search, XPath targeting, Exact Match.
  • Curl:
    curl -X POST "$KALTURA_SERVICE_URL/service/elasticsearch_esearch/action/searchEntry" \
    -d "ks=$KALTURA_KS" \
    -d "searchParams[searchOperator][searchItems][0][objectType]=KalturaESearchEntryMetadataItem" \
    -d "searchParams[searchOperator][searchItems][0][searchTerm]=recipe" \
    -d "searchParams[searchOperator][searchItems][0][itemType]=1" \
    -d "searchParams[searchOperator][searchItems][0][metadataProfileId]=$METADATA_PROFILE_ID" \
    -d "searchParams[searchOperator][searchItems][0][xpath]=/*[local-name()='metadata']/*[local-name()='Field1']" \
    -d "searchParams[searchOperator][searchItems][0][addHighlight]=true" \
    -d "searchParams[searchOperator][objectType]=KalturaESearchEntryOperator" \
    -d "searchParams[objectType]=KalturaESearchEntryParams" \
    -d "format=1" | jq .

E. Complex Logic (AND/NOT)

  • Goal: Find entries with "strawberry" in the name AND which do NOT have "adding sugar" in the cue point text.
  • Capability: Complex logic operators, Field-specific search, Cue point search.
  • Structure: The top-level AND operator (operator=1) combines two items: item 0 searches for "strawberry" in the name field, and item 1 is a nested NOT operator (operator=3) whose child item searches cue point text for "adding sugar".
  • Curl:
    curl -X POST "$KALTURA_SERVICE_URL/service/elasticsearch_esearch/action/searchEntry" \
    -d "ks=$KALTURA_KS" \
    -d "searchParams[searchOperator][operator]=1" \
    -d "searchParams[searchOperator][objectType]=KalturaESearchEntryOperator" \
    -d "searchParams[searchOperator][searchItems][0][objectType]=KalturaESearchEntryItem" \
    -d "searchParams[searchOperator][searchItems][0][itemType]=2" \
    -d "searchParams[searchOperator][searchItems][0][fieldName]=name" \
    -d "searchParams[searchOperator][searchItems][0][searchTerm]=strawberry" \
    -d "searchParams[searchOperator][searchItems][1][objectType]=KalturaESearchEntryOperator" \
    -d "searchParams[searchOperator][searchItems][1][operator]=3" \
    -d "searchParams[searchOperator][searchItems][1][searchItems][0][objectType]=KalturaESearchCuePointItem" \
    -d "searchParams[searchOperator][searchItems][1][searchItems][0][itemType]=1" \
    -d "searchParams[searchOperator][searchItems][1][searchItems][0][fieldName]=text" \
    -d "searchParams[searchOperator][searchItems][1][searchItems][0][searchTerm]=adding sugar" \
    -d "searchParams[objectType]=KalturaESearchEntryParams" \
    -d "format=1" | jq .

F. Date Range Search

  • Goal: Find entries created between Jan 1, 2024 (1704067200) and Feb 1, 2024 (1706745600).
  • Capability: Range searching on date fields.
  • Curl:
    curl -X POST "$KALTURA_SERVICE_URL/service/elasticsearch_esearch/action/searchEntry" \
    -d "ks=$KALTURA_KS" \
    -d "searchParams[searchOperator][searchItems][0][objectType]=KalturaESearchEntryItem" \
    -d "searchParams[searchOperator][searchItems][0][itemType]=5" \
    -d "searchParams[searchOperator][searchItems][0][fieldName]=created_at" \
    -d "searchParams[searchOperator][searchItems][0][range][objectType]=KalturaESearchRange" \
    -d "searchParams[searchOperator][searchItems][0][range][greaterThanOrEqual]=1704067200" \
    -d "searchParams[searchOperator][searchItems][0][range][lessThan]=1706745600" \
    -d "searchParams[searchOperator][objectType]=KalturaESearchEntryOperator" \
    -d "searchParams[objectType]=KalturaESearchEntryParams" \
    -d "format=1" | jq .

G. Aggregation & Sorting

  • Goal: Find "visual studio code", aggregate by media_type, sort by last_played_at (desc).
  • Capability: Aggregation, Sorting.
  • Important: The orderBy items must use the concrete type KalturaESearchEntryOrderByItem for entry search (not the abstract KalturaESearchOrderByItem, which returns OBJECT_TYPE_ABSTRACT). Similarly, the aggregations array is nested inside the aggregations container: searchParams[aggregations][aggregations][0].
  • Curl:
    curl -X POST "$KALTURA_SERVICE_URL/service/elasticsearch_esearch/action/searchEntry" \
    -d "ks=$KALTURA_KS" \
    -d "searchParams[searchOperator][searchItems][0][objectType]=KalturaESearchUnifiedItem" \
    -d "searchParams[searchOperator][searchItems][0][searchTerm]=visual studio code" \
    -d "searchParams[searchOperator][searchItems][0][itemType]=2" \
    -d "searchParams[searchOperator][objectType]=KalturaESearchEntryOperator" \
    -d "searchParams[objectType]=KalturaESearchEntryParams" \
    -d "searchParams[aggregations][aggregations][0][objectType]=KalturaESearchEntryAggregationItem" \
    -d "searchParams[aggregations][aggregations][0][fieldName]=media_type" \
    -d "searchParams[aggregations][aggregations][0][size]=10" \
    -d "searchParams[orderBy][orderItems][0][objectType]=KalturaESearchEntryOrderByItem" \
    -d "searchParams[orderBy][orderItems][0][sortField]=last_played_at" \
    -d "searchParams[orderBy][orderItems][0][sortOrder]=desc" \
    -d "format=1" | jq .

Equivalent nested JSON (for SDK / agent integration):

{
"ks": "$KALTURA_KS",
"format": 1,
"searchParams": {
"objectType": "KalturaESearchEntryParams",
"searchOperator": {
"objectType": "KalturaESearchEntryOperator",
"operator": 2,
"searchItems": [{
"objectType": "KalturaESearchUnifiedItem",
"searchTerm": "visual studio code",
"itemType": 2
}]
},
"orderBy": {
"orderItems": [{
"objectType": "KalturaESearchEntryOrderByItem",
"sortField": "last_played_at",
"sortOrder": "desc"
}]
},
"aggregations": {
"aggregations": [{
"objectType": "KalturaESearchEntryAggregationItem",
"fieldName": "media_type",
"size": 10
}]
}
},
"pager": {"pageSize": 10}
}