Sí, puede, utilizando un script field.
Por ejemplo, suponiendo que el documento tiene un campo geo-punto llamado location
, podría utilizar el siguiente:
(tenga en cuenta la \u0027
es sólo una comilla simple escapado, por lo \u0027location\u0027
es realmente 'location'
)
curl -XGET 'http://127.0.0.1:9200/geonames/_search?pretty=1' -d '
{
"script_fields" : {
"distance" : {
"params" : {
"lat" : 2.27,
"lon" : 50.3
},
"script" : "doc[\u0027location\u0027].distanceInKm(lat,lon)"
}
}
}
'
# [Thu Feb 16 11:20:29 2012] Response:
# {
# "hits" : {
# "hits" : [
# {
# "_score" : 1,
# "fields" : {
# "distance" : 466.844095463887
# },
# "_index" : "geonames_1318324623",
# "_id" : "6436641_en",
# "_type" : "place"
# },
... etc
Si desea que el campo _source
a ser devuelto a su vez, a continuación, se puede especificar que la siguiente manera:
curl -XGET 'http://127.0.0.1:9200/geonames/_search?pretty=1' -d '
{
"fields" : [ "_source" ],
"script_fields" : {
"distance" : {
"params" : {
"lat" : 2.27,
"lon" : 50.3
},
"script" : "doc[\u0027location\u0027].distanceInKm(lat,lon)"
}
}
}
'
¡Perfecto! Gracias. – Yeggeps
Sin embargo, estoy teniendo problemas para obtener tanto _source como la distancia devuelta. Si especifico _source como "campos" solo obtengo _source, si no lo hago solo, obtengo distancia. ¿Alguna idea? – Yeggeps
¿Qué versión de ES estás usando? Cuando escribí esta respuesta, apareció un error recientemente introducido que significaba que la fuente no se devolvía. Sin embargo, eso se ha corregido en el último RC – DrTech