Link Search Menu Expand Document Documentation Menu

Search Memory API

Introduced 3.3

Use this API to search for memories of a specific type within a memory container. This unified API supports searching sessions, working, long-term, and history memory types.

Endpoints

GET /_plugins/_ml/memory_containers/<memory_container_id>/memories/<type>/_search

Path parameters

The following table lists the available path parameters.

Parameter Data type Required/Optional Description
memory_container_id String Required The ID of the memory container.
type String Required The memory type. Valid values are sessions, working, long-term, and history.

Request fields

The request body supports standard OpenSearch query domain-specific language (DSL). For more information, see Query DSL.

Example request: Search sessions

GET /_plugins/_ml/memory_containers/HudqiJkB1SltqOcZusVU/memories/sessions/_search
{
  "query": {
    "match_all": {}
  },
  "sort": [
    {
      "created_time": {
        "order": "desc"
      }
    }
  ]
}

Example request: Search long-term memories

GET /_plugins/_ml/memory_containers/HudqiJkB1SltqOcZusVU/memories/long-term/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "term": {
            "namespace.user_id": "bob"
          }
        }
      ]
    }
  },
  "sort": [
    {
      "created_time": {
        "order": "desc"
      }
    }
  ]
}

Example request: Search a history memory

GET /_plugins/_ml/memory_containers/HudqiJkB1SltqOcZusVU/memories/history/_search
{
  "query": {
    "match_all": {}
  },
  "sort": [
    {
      "created_time": {
        "order": "desc"
      }
    }
  ]
}

Example request: Search working memories with a namespace filter

GET /_plugins/_ml/memory_containers/HudqiJkB1SltqOcZusVU/memories/working/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "term": {
            "namespace.user_id": "bob"
          }
        }
      ],
      "must_not": [
        {
          "exists": {
            "field": "tags.parent_memory_id"
          }
        }
      ]
    }
  },
  "sort": [
    {
      "created_time": {
        "order": "desc"
      }
    }
  ]
}

Example request: Search trace data by session

GET /_plugins/_ml/memory_containers/HudqiJkB1SltqOcZusVU/memories/working/_search
{
  "query": {
    "term": {
      "namespace.session_id": "123"
    }
  },
  "sort": [
    {
      "created_time": {
        "order": "desc"
      }
    }
  ]
}

Example response

{
  "took": 5,
  "timed_out": false,
  "_shards": {
    "total": 1,
    "successful": 1,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": {
      "value": 1,
      "relation": "eq"
    },
    "max_score": null,
    "hits": [
      {
        "_index": "test1-session",
        "_id": "CcxjTpkBvwXRq366A1aE",
        "_score": null,
        "_source": {
          "memory_container_id": "HudqiJkB1SltqOcZusVU",
          "namespace": {
            "user_id": "bob"
          },
          "created_time": "2025-09-15T17:18:55.881276939Z",
          "last_updated_time": "2025-09-15T17:18:55.881276939Z"
        },
        "sort": ["2025-09-15T17:18:55.881276939Z"]
      }
    ]
  }
}

Response fields

The response fields vary depending on the memory type being searched. For field descriptions, see Get memory.