# Медленно работает geo поиск

**URL:** <https://discuss.elastic.co/t/geo/146637>\
**Category:** Вопросы на русском языке\
**Created:** [August 30, 2018, 7:54am UTC](https://discuss.elastic.co/t/geo/146637 "2018-08-30T07:54:41Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![111126](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/111126/32/36818_2.png) [@111126](https://discuss.elastic.co/u/111126)\
**Post date:** [August 30, 2018, 7:54am UTC](https://discuss.elastic.co/t/geo/146637/1 "2018-08-30T07:54:42Z")

</div>

В продолжении ранее заданного мною вопроса ([Сложный поисковый запрос](https://discuss.elastic.co/t/topic/143137)) Наступил на следующие грабли:  
Есть большой список координат (гео точек). Надо для каждой точки найти poi попадающие в радиус 100 метров.  
Написал скриптик на баше, который циклом проходит по списку и ищет poi с помощью вот такого запроса:

> curl -X GET "[http://localhost:9200/poi-database/\_search?filter\_path=hits.hits.\_source&\_source=poi\_name,poi\_type\_name,location,poi\_full\_name&pretty=true](http://localhost:9200/poi-database/_search?filter_path=hits.hits._source&_source=poi_name,poi_type_name,location,poi_full_name&pretty=true)" -H 'Content-Type: application/json' -d'  
> {  
> "from" : 0, "size" : 10000000,  
> "query": {  
> "bool": {  
> "should":  
> {  
> "geo\_distance": {  
> "distance": "100m",  
> "location" : {  
> "lon" : "'${array\_lon[$a]}'",  
> "lat" : "'${array\_lat[$a]}'"  
> }  
> }  
> }  
> }  
> }  
> }

найденный список poi для конкретной координаты записывается в файл (app/pois.json) и затем происходит апдейт документа в эластике (дописываю найденные poi к каждому документу)

> curl -X POST "[http://localhost:9200/user\_point/doc/${array\_id[$a]}/\_update](http://localhost:9200/user_point/doc/$%7Barray_id%5B$a%5D%7D/_update)" -H 'Content-Type: application/json' -d @app/pois.json

Так вот вся эта констукция работает очень медленно. Поиск poi для 100к юзерских точек занимает почти сутки. При этом кластер у меня из можных серверов в количестве 7 нод.  
И сколько бы я не запускал экземпляров своего скрипта, в мониторинге индекса содержащего poi (poi-database) search rate всегда в районе 5 запросов в секунду (и при одном скрипте и при пяти скриптах)

Не понимаю почему так медленно работает и как ускорить ?

---

<div class="post-metadata">

**Author:** ![Igor\_Motov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/igor_motov/32/45193_2.png) [@Igor\_Motov](https://discuss.elastic.co/u/Igor_Motov)\
**Post date:** [September 7, 2018, 3:37pm UTC](https://discuss.elastic.co/t/geo/146637/2 "2018-09-07T15:37:41Z")

</div>

То что вы описали действительно будет работать медленно, но я не очень понимаю, какую проблему вы пытаетесь решить, и поэтому не могу ничего в данном случае порекомендовать.

---

<div class="post-metadata">

**Author:** ![111126](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/111126/32/36818_2.png) [@111126](https://discuss.elastic.co/u/111126)\
**Post date:** [September 14, 2018, 12:47pm UTC](https://discuss.elastic.co/t/geo/146637/3 "2018-09-14T12:47:22Z")

</div>

Проблему решил уменьшением индекса с poi, выдернув из нее нужный мне регион. Но это так скажем полумера.

> [@Igor\_Motov](#):
>
> То что вы описали действительно будет работать медленно

Хотелось бы узнать причину медленности. Когда geo\_distance поиск происходит по большому индексу он работает медленно, при этом сервера практически не испытывают нагрузки. Т.е. я не уперся в железо, я уперся в сам elasticsearch .

---

<div class="post-metadata">

**Author:** ![Igor\_Motov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/igor_motov/32/45193_2.png) [@Igor\_Motov](https://discuss.elastic.co/u/Igor_Motov)\
**Post date:** [September 14, 2018, 1:06pm UTC](https://discuss.elastic.co/t/geo/146637/4 "2018-09-14T13:06:35Z")

</div>

Вы не пробовали объединять несколько запросов `geo_distance` в один?

И вы уверены, что замедление происходит из-за поиска, а не из-за update?

---

<div class="post-metadata">

**Author:** ![111126](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/111126/32/36818_2.png) [@111126](https://discuss.elastic.co/u/111126)\
**Post date:** [September 14, 2018, 1:28pm UTC](https://discuss.elastic.co/t/geo/146637/5 "2018-09-14T13:28:04Z")

</div>

> [@Igor\_Motov](#):
>
> Вы не пробовали объединять несколько запросов `geo_distance` в один?

нет, не пробовал. В теории я должен получить прирост по скорости или неизвестно?

> [@Igor\_Motov](#):
>
> И вы уверены, что замедление происходит из-за поиска, а не из-за update?

Уверен.

Странным еще выглядит то что во сколько бы потоков (экземпляров запускатора "geo\_distance" поиска) я не стучался в elastic, в мониторинге эластика search rate индекса по которому происходит поиск остается одинаковым. Как будто лимит где-то стоит.

---

<div class="post-metadata">

**Author:** ![Igor\_Motov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/igor_motov/32/45193_2.png) [@Igor\_Motov](https://discuss.elastic.co/u/Igor_Motov)\
**Post date:** [September 14, 2018, 5:40pm UTC](https://discuss.elastic.co/t/geo/146637/6 "2018-09-14T17:40:53Z")

</div>

А вы не могли бы hotthreads прислать для кластера во время исполнения скрипта - желательно штук 5 - для полноты картины.

---

<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:** [October 12, 2018, 5:40pm UTC](https://discuss.elastic.co/t/geo/146637/7 "2018-10-12T17:40:56Z")

</div>

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