How to get ElasticSearch to return only specific source fields. FYI, this is called Source Filtering on elastic.co's website.
Example: 1
in the request payload, specify
_source: ["fieldname1", "fieldname2"]
Example:
Sample Data
POST /library/books/_bulk
{ "index": { "_id": 1 } }
{ "title": "The quick brown fox", "price": 5, "colors": ["red","green","blue"] }
{ "index": { "_id": 2 } }
{ "title": "The quick brown fox jumps over the lazy dog", "price": 6, "colors": ["blue","yellow"] }
{ "index": { "_id": 3 } }
{ "title": "The quick brown fox jumps over the quick dog", "price": 7, "colors": ["green", "purple"] }
{ "index": { "_id": 4 } }
{ "title": "The quick brown fox jumps over the stupid dog", "price": 8, "colors": ["green","yellow"] }
{ "index": { "_id": 5 } }
{ "title": "The quick brown fox jumped and farted", "price": 9, "colors": ["yellow", "purple"] }
Search with _source - return back only title and price
GET /library/books/_search
{
"_source": [ "title", "price" ]
}
Example: 2
Sample Data
POST /library/books/6
{
"title": "The quick brown fox",
"price": 5,
"colors": ["red","green","blue"],
"contacts": [
{
"id": 1,
"name": "john doe"
},
{
"id": 2,
"name": "john doe"
},
{
"id": 3,
"name": "john doe"
}
]
}
Search with _source Example
GET /_search
{
"_source": {
"includes": [ "title", "price" ],
"excludes": [ "colors" ]
},
"query" : {
"term" : { "user" : "kimchy" }
}
}
Reference Documentation:
https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-source-filtering.html