# Json Array of geo locations, get distance of all the location in json array of a Document

**URL:** <https://discuss.elastic.co/t/json-array-of-geo-locations-get-distance-of-all-the-location-in-json-array-of-a-document/55974>\
**Category:** Elasticsearch\
**Created:** [July 20, 2016, 11:05am UTC](https://discuss.elastic.co/t/json-array-of-geo-locations-get-distance-of-all-the-location-in-json-array-of-a-document/55974 "2016-07-20T11:05:16Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Saikrishna\_Rangineni](https://avatars.discourse-cdn.com/v4/letter/s/5fc32e/32.png) [@Saikrishna\_Rangineni](https://discuss.elastic.co/u/Saikrishna_Rangineni)\
**Post date:** [July 20, 2016, 11:05am UTC](https://discuss.elastic.co/t/json-array-of-geo-locations-get-distance-of-all-the-location-in-json-array-of-a-document/55974/1 "2016-07-20T11:05:16Z")

</div>

i have and document which contains array of locations with address and lat / long( geo\_point).

{  
"practiceLocations":[  
{  
"city":"ELKO",  
"state":"NV",  
"zipCode":"89801",  
"locationCode":"8331",  
"location":{  
"lat":40.832383,  
"lon":-115.734026  
}  
},  
{  
"city":"FAIRFIELD",  
"state":"CA",  
"zipCode":"94534",  
"locationCode":"9715",  
"location":{  
"lat":38.2368397,  
"lon":-122.0853558  
}  
},  
{  
"city":"SACRAMENTO",  
"state":"CA",  
"zipCode":"95816",  
"country":"US",  
"phoneNo":"8775150053",  
"faxNo":"9164546926",  
"locationCode":"5120",  
"location":{  
"lat":38.5729335,  
"lon":-121.4690193  
}  
}  
]  
}

i want to get the location of all the locations in the practiceLocations array.

So i tries script\_fields to calculate the distance from any lat/ long.

{  
"fields": [  
"\_source"  
],  
"query" : { "match\_all": {} },  
"script\_fields" : {  
"distance" : {  
"script" : "doc['practiceLocationAddress.location'].distanceInMiles(38,-118)"  
}}

i'm able to get the first element distance in array from the mentioned lat long.

we have doc['field\_name'].lats, doc['field\_name'].lons to get the all the latitude and longitude in the array but i dint see and function which gives all the distances in array.

---

<div class="post-metadata">

**Author:** ![Luis\_Rosales](https://avatars.discourse-cdn.com/v4/letter/l/ccd318/32.png) [@Luis\_Rosales](https://discuss.elastic.co/u/Luis_Rosales)\
**Post date:** [September 22, 2016, 2:28am UTC](https://discuss.elastic.co/t/json-array-of-geo-locations-get-distance-of-all-the-location-in-json-array-of-a-document/55974/2 "2016-09-22T02:28:21Z")

</div>

Same issue here! Can anyone help?

---

<div class="post-metadata">

**Author:** ![Saikrishna\_Rangineni](https://avatars.discourse-cdn.com/v4/letter/s/5fc32e/32.png) [@Saikrishna\_Rangineni](https://discuss.elastic.co/u/Saikrishna_Rangineni)\
**Post date:** [September 29, 2016, 3:51am UTC](https://discuss.elastic.co/t/json-array-of-geo-locations-get-distance-of-all-the-location-in-json-array-of-a-document/55974/3 "2016-09-29T03:51:00Z")

</div>

HI Luis,

I dint find any solution so i changed the document structure such that each document will have only lat, long instead of array .

---

<div class="post-metadata">

**Author:** ![iti](https://avatars.discourse-cdn.com/v4/letter/i/b19c9b/32.png) [@iti](https://discuss.elastic.co/u/iti)\
**Post date:** [March 30, 2017, 9:10pm UTC](https://discuss.elastic.co/t/json-array-of-geo-locations-get-distance-of-all-the-location-in-json-array-of-a-document/55974/4 "2017-03-30T21:10:22Z")

</div>

Change you mapping to nested type. Then use inner\_hits:  
{  
"size": 10,  
"\_source": {  
"include": "location"  
},  
"query": {  
"bool": {  
"filter": {  
"nested": {  
"path": "practiceLocations",  
"query": {  
"match\_all": {}  
},  
"inner\_hits": {  
"size": 100,  
"script\_fields": {  
"distance": {  
"script": {  
"inline": "if (!doc['practiceLocations.location'].empty) {doc['practiceLocations.location'].arcDistance(params.lat,params.lon) }",  
"lang": "painless",  
"params": {  
"lat": 38.2368397,  
"lon": -122.0853558  
}  
}  
}  
}  
}  
}  
}  
}  
}  
}

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [July 5, 2017, 10:01pm UTC](https://discuss.elastic.co/t/json-array-of-geo-locations-get-distance-of-all-the-location-in-json-array-of-a-document/55974/5 "2017-07-05T22:01:40Z")

</div>


