Мне нужно «преобразовать» запрос mysql в запрос Elasticsearch. Что меня блокирует, так это утверждение «где». По сути, мне нужно найти все товары, которые находятся на расстоянии 25 миль в зависимости от широты и долготы и где включена функция самовывоза ИЛИ, где для товаров включена доставка и указан почтовый индекс.
where
(
(
`enabled_pickup` = '1'
and(
ST_Distance_Sphere(
POINT(- 122.41941550000001 , 37.7749295) ,
geolocation
) / 1000 * 0.62137119223733
) <= 25
)
or(
`enabled_delivery` = '1'
`zip_code` = '94116'
)
)
и это запрос Elasticsearch, который не работает должным образом
{
"query": {
"bool": {
"must": [
{
"bool": {
"should": [
{
"bool": {
"must": [
{
"match": {
"enabled_pickup": "1"
}
},
{
"geo_distance": {
"distance": "25 mi",
"geo_location": {
"lat": "37.7749295",
"lon": "-122.41941550000001"
}
}
}
]
}
},
{
"bool": {
"must": [
{
"term": {
"dispensary.delivery": "1"
}
},
{
"term": {
"zip_code": "94116"
}
}
]
}
}
]
}
}
]
}
} }
может кто-нибудь указать мне в правильном направлении?