Elasticsearch remove default fields from search’s response body

Elasticsearch remove default fields from search’s response body

Im doing a query that returns like 70k documents (I need all of them, and Im currently using scan & scroll)
What happens is that the response is very large (2 MB and we alredy reduced it from 6 MB). We alredy filtered the fields we needed, and since the query is only called from an API we reduced the name of the properties.
What i can see is that every document in the array “hits” has the following default fields that i really dont need them:

_index (we only request on one index)
_type (we only request on one type)
_id (we alredy have this on a field)
_score (we are not scoring)

Is there a way to remove them so i can have the following structure:
“hits” : [
{
“_source”: {

}
},
{
“_source”: {

}
}

]
Thanks for reading!
I will appreciate your help!

Solutions/Answers:

Solution 1:

Yes, you can use response filtering and the filter_path parameter, provided you’re using ES 1.6 or later.

curl -XGET 'localhost:9200/_search?pretty&filter_path=hits.hits._source'

You can even specify the just the fields you want

curl -XGET 'localhost:9200/_search?pretty&filter_path=hits.hits._source&_source=title,name'

References

Related:  Python wrapper for ElasticSearch on Heroku