search mobile facets autocomplete spellcheck crawler rankings weights synonyms analytics engage api customize documentation install setup technology content domains user history info home business cart chart contact email activate analyticsalt analytics autocomplete cart contact content crawling custom documentation domains email engage faceted history info install mobile person querybuilder search setup spellcheck synonyms weights engage_search_term engage_related_content engage_next_results engage_personalized_results engage_recent_results success add arrow-down arrow-left arrow-right arrow-up caret-down caret-left caret-right caret-up check close content conversions-small conversions details edit grid help small-info error live magento minus move photo pin plus preview refresh search settings small-home stat subtract text trash unpin wordpress x alert case_deflection advanced-permissions keyword-detection predictive-ai sso

Meta Engines

Read the Meta Engines guide to learn more about Meta Engines.


NOTE: Meta Engines are only available in the Elastic Cloud and Self-Managed version of App Search, with a Platinum License.

Meta Engines are primarily managed through the Engines API.

Meta Engines have a type property of meta, and support a source_engines property.

Example - Create a Meta Engine with two Source Engines
curl -X POST 'https://localhost:3002/api/as/v1/engines' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer private-xxxxxxxxxxxxxxxxxxxx' \
-d '{
  "name": "national-parks",
  "type": "meta",
  "source_engines": [
    "eastern-national-parks",
    "western-national-parks"
  ]
}'

Example - Create a Meta Engine with two Source Engines
No Java example available, showing cURL
curl -X POST 'https://localhost:3002/api/as/v1/engines' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer private-xxxxxxxxxxxxxxxxxxxx' \
-d '{
  "name": "national-parks",
  "type": "meta",
  "source_engines": [
    "eastern-national-parks",
    "western-national-parks"
  ]
}'

Example - Create a Meta Engine with two Source Engines
No Node example available, showing cURL
curl -X POST 'https://localhost:3002/api/as/v1/engines' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer private-xxxxxxxxxxxxxxxxxxxx' \
-d '{
  "name": "national-parks",
  "type": "meta",
  "source_engines": [
    "eastern-national-parks",
    "western-national-parks"
  ]
}'

Example - Create a Meta Engine with two Source Engines
No Ruby example available, showing cURL
curl -X POST 'https://localhost:3002/api/as/v1/engines' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer private-xxxxxxxxxxxxxxxxxxxx' \
-d '{
  "name": "national-parks",
  "type": "meta",
  "source_engines": [
    "eastern-national-parks",
    "western-national-parks"
  ]
}'

Example - Create a Meta Engine with two Source Engines
No Python example available, showing cURL
curl -X POST 'https://localhost:3002/api/as/v1/engines' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer private-xxxxxxxxxxxxxxxxxxxx' \
-d '{
  "name": "national-parks",
  "type": "meta",
  "source_engines": [
    "eastern-national-parks",
    "western-national-parks"
  ]
}'

Example - Create a Meta Engine with two Source Engines
No Javascript example available, showing cURL
curl -X POST 'https://localhost:3002/api/as/v1/engines' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer private-xxxxxxxxxxxxxxxxxxxx' \
-d '{
  "name": "national-parks",
  "type": "meta",
  "source_engines": [
    "eastern-national-parks",
    "western-national-parks"
  ]
}'

Documents will have the following fields to help orient yourself within Meta Engine documents:

{
  // The Scoped Document ID, which is the canonical ID for documents within a Meta Engine
  // context. This is the Engine Name and Document ID joined with a pipe character ("|").
  "id": "eastern-national-parks|park_acadia",
  {
    "_meta": {
      // Source Engine document belongs to
      "engine": "eastern-national-parks",
      // Un-scoped Document ID
      "id": "park_acadia"
    },
  }
}

The _engine field can be used to filter documents by Source Engine.

Example - Filter Meta Engine documents by Source Engine
curl -X POST 'https://localhost:3002/api/as/v1/engines/national-parks/search' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer search-soaewu2ye6uc45dr8mcd54v8' \
-d '{
  "query": "",
  "filters": {
    "_engine": ["eastern-national-parks"]
  }
}'

Example - Filter Meta Engine documents by Source Engine
No Java example available, showing cURL
curl -X POST 'https://localhost:3002/api/as/v1/engines/national-parks/search' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer search-soaewu2ye6uc45dr8mcd54v8' \
-d '{
  "query": "",
  "filters": {
    "_engine": ["eastern-national-parks"]
  }
}'

Example - Filter Meta Engine documents by Source Engine
No Node example available, showing cURL
curl -X POST 'https://localhost:3002/api/as/v1/engines/national-parks/search' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer search-soaewu2ye6uc45dr8mcd54v8' \
-d '{
  "query": "",
  "filters": {
    "_engine": ["eastern-national-parks"]
  }
}'

Example - Filter Meta Engine documents by Source Engine
No Ruby example available, showing cURL
curl -X POST 'https://localhost:3002/api/as/v1/engines/national-parks/search' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer search-soaewu2ye6uc45dr8mcd54v8' \
-d '{
  "query": "",
  "filters": {
    "_engine": ["eastern-national-parks"]
  }
}'

Example - Filter Meta Engine documents by Source Engine
No Python example available, showing cURL
curl -X POST 'https://localhost:3002/api/as/v1/engines/national-parks/search' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer search-soaewu2ye6uc45dr8mcd54v8' \
-d '{
  "query": "",
  "filters": {
    "_engine": ["eastern-national-parks"]
  }
}'

Example - Filter Meta Engine documents by Source Engine
No Javascript example available, showing cURL
curl -X POST 'https://localhost:3002/api/as/v1/engines/national-parks/search' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer search-soaewu2ye6uc45dr8mcd54v8' \
-d '{
  "query": "",
  "filters": {
    "_engine": ["eastern-national-parks"]
  }
}'

Any other API endpoint within a Meta Engine that requires a Document ID as a parameter will require a Scoped Document ID to be used.

Example - Create a Curation on a Meta Engine using Scoped Document ID
curl -X POST 'https://localhost:3002/api/as/v1/engines/national-parks/curations' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer private-xxxxxxxxxxxxxxxxxxxxxxxx' \
-d '{
  "queries": [
    "acadia"
  ],
  "promoted": [
    "eastern-national-parks|park_acadia"
  ]
}'

Example - Create a Curation on a Meta Engine using Scoped Document ID
No Java example available, showing cURL
curl -X POST 'https://localhost:3002/api/as/v1/engines/national-parks/curations' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer private-xxxxxxxxxxxxxxxxxxxxxxxx' \
-d '{
  "queries": [
    "acadia"
  ],
  "promoted": [
    "eastern-national-parks|park_acadia"
  ]
}'

Example - Create a Curation on a Meta Engine using Scoped Document ID
No Node example available, showing cURL
curl -X POST 'https://localhost:3002/api/as/v1/engines/national-parks/curations' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer private-xxxxxxxxxxxxxxxxxxxxxxxx' \
-d '{
  "queries": [
    "acadia"
  ],
  "promoted": [
    "eastern-national-parks|park_acadia"
  ]
}'

Example - Create a Curation on a Meta Engine using Scoped Document ID
No Ruby example available, showing cURL
curl -X POST 'https://localhost:3002/api/as/v1/engines/national-parks/curations' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer private-xxxxxxxxxxxxxxxxxxxxxxxx' \
-d '{
  "queries": [
    "acadia"
  ],
  "promoted": [
    "eastern-national-parks|park_acadia"
  ]
}'

Example - Create a Curation on a Meta Engine using Scoped Document ID
No Python example available, showing cURL
curl -X POST 'https://localhost:3002/api/as/v1/engines/national-parks/curations' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer private-xxxxxxxxxxxxxxxxxxxxxxxx' \
-d '{
  "queries": [
    "acadia"
  ],
  "promoted": [
    "eastern-national-parks|park_acadia"
  ]
}'

Example - Create a Curation on a Meta Engine using Scoped Document ID
No Javascript example available, showing cURL
curl -X POST 'https://localhost:3002/api/as/v1/engines/national-parks/curations' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer private-xxxxxxxxxxxxxxxxxxxxxxxx' \
-d '{
  "queries": [
    "acadia"
  ],
  "promoted": [
    "eastern-national-parks|park_acadia"
  ]
}'

In addition to the Engines API, the following endpoints can be used with Meta Engines:

Add Source Engines

This feature is available to Elastic Cloud and self-managed App Search deployments. See Meta Engines in the self-managed App Search documentation.

Remove Source Engines

This feature is available to Elastic Cloud and self-managed App Search deployments. See Meta Engines in the self-managed App Search documentation.