You can calculate a custom score using a script. This script uses SimpleDateFormat to parse your date (1985-10-01), then calculates the absolute value of that date (in ms) minus the document's date (in ms). You want the lowest value (closest to target date) first, so sort by score ascending instead of the default descending.
{
"query": {
"custom_score": {
"query": {
"fuzzy": {
"birthdate": {
"value": "1985-10-01",
"min_similarity": "1096d"
}
}
},
"script": "abs(new \
java.text.SimpleDateFormat('yyyy-MM-dd').parse('1985-10-01').getTime() - \
doc['birthdate'].date.getMillis())"
}
},
"sort": [
{ "_score": "asc" }
]
}
More info on custom scoring is http://www.elasticsearch.org/guide/reference/query-dsl/custom-score-query/