# Distance calculation

**URL:** <https://discuss.elastic.co/t/distance-calculation/146060>\
**Category:** Elasticsearch\
**Created:** [August 26, 2018, 8:32am UTC](https://discuss.elastic.co/t/distance-calculation/146060 "2018-08-26T08:32:36Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![suresh1](https://avatars.discourse-cdn.com/v4/letter/s/7cd45c/32.png) [@suresh1](https://discuss.elastic.co/u/suresh1)\
**Post date:** [August 26, 2018, 8:32am UTC](https://discuss.elastic.co/t/distance-calculation/146060/1 "2018-08-26T08:32:36Z")

</div>

Hi,

I am trying to calculate the distance

please find the below

PUT my\_index  
{  
"mappings": {  
"doc": {  
"properties": {  
"location": {  
"type": "geo\_point"  
}  
}  
}  
}

POST my\_index/doc  
{  
"location": [  
{  
"lat": 33.235508,  
"lon": -84.265779  
},  
{  
"lat": 33.959574,  
"lon": -84.531721  
}  
]

}

GET my\_index/\_search  
{  
"script\_fields": {  
"geo\_distance": {  
"script": {  
"source":"doc['location'].planeDistance(33.818445,-84.555139)"  
}  
}  
}  
}

I am getting only one record calculated distance, instead of two records.

Could you please help on this

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [August 26, 2018, 10:54am UTC](https://discuss.elastic.co/t/distance-calculation/146060/2 "2018-08-26T10:54:49Z")

</div>

I'm not a painless user but I guess you need to iterate over the location field as it's an array?

---

<div class="post-metadata">

**Author:** ![suresh1](https://avatars.discourse-cdn.com/v4/letter/s/7cd45c/32.png) [@suresh1](https://discuss.elastic.co/u/suresh1)\
**Post date:** [August 26, 2018, 12:05pm UTC](https://discuss.elastic.co/t/distance-calculation/146060/3 "2018-08-26T12:05:51Z")

</div>

I have tried iterate location field, but getting an exception

"GET my\_index/\_search  
{  
"from": 0,  
"size": 30,  
"query": {  
"match\_all": {}  
},  
"script\_fields":  
{

```
"distance": {
  "script": {
    "inline": "def l = new ArrayList(); def geopoint;for(int i=0; i < doc['location'].length;i++){ geopoint = doc['location'][i]; l.add(geopoint.planeDistance(33.818445,-84.555139))} return l;"
  }
}

```

}  
}"

**exception:-**

"script": "def l = new ArrayList(); def geopoint;for(int i=0; i \< doc['location'].length;i++){ geopoint = doc['location'][i]; l.add(geopoint.planeDistance(33.818445,-84.555139))} return l;",  
"lang": "painless",  
"caused\_by": {  
"type": "illegal\_argument\_exception",  
"reason": "Unable to find dynamic method [planeDistance] with [2] arguments for class [org.elasticsearch.common.geo.GeoPoint]."

---

<div class="post-metadata">

**Author:** ![suresh1](https://avatars.discourse-cdn.com/v4/letter/s/7cd45c/32.png) [@suresh1](https://discuss.elastic.co/u/suresh1)\
**Post date:** [August 27, 2018, 5:05pm UTC](https://discuss.elastic.co/t/distance-calculation/146060/4 "2018-08-27T17:05:02Z")

</div>

Hey David,

I have tried iterate location field, but getting an exception

**exception:-**

"script": "def l = new ArrayList(); def geopoint;for(int i=0; i \< doc['location'].length;i++){ geopoint = doc['location'][i]; l.add(geopoint.planeDistance(33.818445,-84.555139))} return l;",  
"lang": "painless",  
"caused\_by": {  
"type": "illegal\_argument\_exception",  
"reason": "Unable to find dynamic method [planeDistance] with [2] arguments for class [org.elasticsearch.common.geo.GeoPoint]."

Could you please help us

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [August 28, 2018, 7:48am UTC](https://discuss.elastic.co/t/distance-calculation/146060/5 "2018-08-28T07:48:01Z")

</div>

I wonder if you should call something like this instead?

```auto
GeoDistance.PLANE.calculate(geopoint.lat(), geopoint.lon(), 33.818445, -84.555139, DistanceUnit.METERS);

```

But again, i'm not expert on Painless.

---

<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:** [September 25, 2018, 7:48am UTC](https://discuss.elastic.co/t/distance-calculation/146060/6 "2018-09-25T07:48:03Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
