【发布时间】:2017-11-14 20:28:45
【问题描述】:
我需要将 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"
}
}
]
}
}
]
}
}
]
}
} }
有人能指点我正确的方向吗?
【问题讨论】:
标签: mysql elasticsearch elasticsearch-5