Поиск географического местоположения Elasticsearch не возвращает результаты за единицу измерения миль

Я использую эластичный поиск для возврата бизнеса рядом с местоположением пользователя.

Если я ищу с единицей расстояния в километрах «км», я получаю ожидаемые результаты, но если я использую мили «м», он возвращает 0 хитов

пример запроса km с хитами

{
"sort" : [
{
"_geo_distance" : {
"location" : {
"lon": -0.11454850000000001,
"lat": 51.4911665
},
"order" : "asc",
"unit" : "km"}
}
],
"query": {
"filtered" : {
"query" : {
"match_all" : {}
},
"filter" : {
"geo_distance" : {
"distance" : "1km",
"location" : {
"lon": -0.11454850000000001,
"lat": 51.4911665
}
}
}
}
}
}

1 км = 0,6 мили, поэтому этот запрос должен возвращать то же количество результатов, что и выше, но возвращает 0

{
"sort" : [
{
"_geo_distance" : {
"location" : {
"lon": -0.11454850000000001,
"lat": 51.4911665
},
"order" : "asc",
"unit" : "m"}
}
],
"query": {
"filtered" : {
"query" : {
"match_all" : {}
},
"filter" : {
"geo_distance" : {
"distance" : "1m",
"location" : {
"lon": -0.11454850000000001,
"lat": 51.4911665
}
}
}
}
}
}

Есть идеи, почему это может быть?

0

Решение

Вам просто нужно использовать правильная единица расстояния: m для метров, а для миль вам нужно использовать mi

{
"sort" : [
{
"_geo_distance" : {
"location" : {
"lon": -0.11454850000000001,
"lat": 51.4911665
},
"order" : "asc",
"unit" : "mi"                     <--- here
}
}
],
"query": {
"filtered" : {
"query" : {
"match_all" : {}
},
"filter" : {
"geo_distance" : {
"distance" : "1mi",             <--- here
"location" : {
"lon": -0.11454850000000001,
"lat": 51.4911665
}
}
}
}
}
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]