Link Search Menu Expand Document Documentation Menu

Store

The store mapping parameter determines whether the value of a field should be stored separately from the _source and made directly retrievable using the stored_fields option in a search request.

By default, store is set to false, meaning that field values are not stored individually and are only available as part of the document _source. If store is set to true, you can disable the _source to save disk space and still retrieve specific fields.

Example: Enabling store on a field

The following request creates an index named products in which the model field is stored separately from the _source:

PUT /products
{
  "mappings": {
    "properties": {
      "model": {
        "type": "keyword",
        "store": true
      },
      "name": {
        "type": "text"
      }
    }
  }
}

Ingest a document into the index:

PUT /products/_doc/1
{
  "model": "WM-1001",
  "name": "Wireless Mouse"
}

Retrieve only the stored field:

POST /products/_search
{
  "query": {
    "match": {
      "name": "Mouse"
    }
  },
  "stored_fields": ["model"]
}

This query returns the model field stored separately even though the _source is still available.


Example: Storing fields with _source disabled

If you want to save disk space and don’t need to access the full original document later (for example, for reindexing or updates), you can disable _source and store only necessary fields:

PUT /products_no_source
{
  "mappings": {
    "_source": {
      "enabled": false
    },
    "properties": {
      "model": {
        "type": "keyword",
        "store": true
      },
      "name": {
        "type": "text"
      }
    }
  }
}

Ingest a document into the index:

PUT /products_no_source/_doc/1
{
  "model": "KB-2002",
  "name": "Mechanical Keyboard"
}

Retrieve the stored field:

POST /products_no_source/_search
{
  "query": {
    "match": {
      "name": "Keyboard"
    }
  },
  "stored_fields": ["model"]
}

This query returns the model field retrieved from stored_fields without accessing the _source.

If you attempt to retrieve the _source as follows:

GET /products_no_source/_doc/1

Then the _source in the response will be null. This demonstrates that the full document is no longer available and that only stored fields can be retrieved because _source is disabled:

{
  "_index": "products_no_source",
  "_id": "1",
  "found": true,
  "_source": null
}
350 characters left

Have a question? .

Want to contribute? or .