I have a usecase where I have 2 types of locations (i.e. with geo_point
type):
- Location 1: Has a lat/lon with say radius=90 miles (it will vary) and
type=outgoing
- Location 2: Has a lat/lon with no radius and type=incoming
Now, when a query comes in with: lat/lon and radius=20, I expect this to
happen:
- Simple geo lookup: If the input lat/lon is within 20miles of location 2,
return location 2.
- If input lat/lon is within 90 miles of Location 1, return location 1 too
in the result. If you notice, I want input radius to be overwritten by the
saved radius for a specific type of location.
This is what I have come up with using script:
{
"query": {
"match_all": {}
},
"filter": {
"script": {
"script": "!doc['geopoint'].empty && doc['coverage_type'].value ==
'outgoing' ? doc['geopoint'].distanceInMiles(37,-121) <=
doc['radius'].value : doc['geopoint'].distanceInMiles(37,-121) <= 20"
}
}
}
Where "37,-121" is input lat/lon and 20 is the input radius.
What do you think?
--
Thanks,
-Utkarsh
--
You received this message because you are subscribed to the Google Groups "elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send an email to elasticsearch+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/elasticsearch/CADjjot-aRjyyuHCfvPa2BrSFG6%3DPhqAcG1AwoszQF3dazXBHxQ%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.
Bumping this one up. Any advice on the query?
On Tue, May 13, 2014 at 6:17 PM, Utkarsh Sengar utkarsh2012@gmail.comwrote:
I have a usecase where I have 2 types of locations (i.e. with geo_point
type):
- Location 1: Has a lat/lon with say radius=90 miles (it will vary) and
type=outgoing
- Location 2: Has a lat/lon with no radius and type=incoming
Now, when a query comes in with: lat/lon and radius=20, I expect this to
happen:
- Simple geo lookup: If the input lat/lon is within 20miles of location
2, return location 2.
- If input lat/lon is within 90 miles of Location 1, return location 1
too in the result. If you notice, I want input radius to be overwritten by
the saved radius for a specific type of location.
This is what I have come up with using script:
{
"query": {
"match_all": {}
},
"filter": {
"script": {
"script": "!doc['geopoint'].empty && doc['coverage_type'].value ==
'outgoing' ? doc['geopoint'].distanceInMiles(37,-121) <=
doc['radius'].value : doc['geopoint'].distanceInMiles(37,-121) <= 20"
}
}
}
Where "37,-121" is input lat/lon and 20 is the input radius.
What do you think?
--
Thanks,
-Utkarsh
--
Thanks,
-Utkarsh
--
You received this message because you are subscribed to the Google Groups "elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send an email to elasticsearch+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/elasticsearch/CADjjot9Qxaq2Zd%2BdsCcX3YjJ4%3DKhAQ_fzv0BsUva5R-KWcSKOg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.