---
title: Search Integration
url: https://docs.kaltura.com/docs/rich-media-cms-apis/content-management/custom-metadata-search-integration
---

## Search Integration


### Search Metadata via eSearch

Use `KalturaESearchEntryMetadataItem` to search entries by metadata field values:


```bash
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:


```bash
  -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](/docs/rich-media-cms-apis/content-management/esearch-overview) for multi-item operator syntax.
