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
}