【问题标题】:Convert MySQL query (with where condition) to Elasticsearch query将 MySQL 查询(带有 where 条件)转换为 Elasticsearch 查询
【发布时间】: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


    【解决方案1】:

    我正在阅读类似的问题,您可以尝试使用以下查询。你可以找到this stackoverflow discussion解决的类似问题

    希望这会有所帮助,干杯!

    {
    "query": {
            "bool": {
                "should": [
                    {
                        "bool": {
                          "must": [
                                {"match": { "enabled_pickup": "1"}}
                                ,{ "match": {
                                      "geo_distance": { 
                                            "distance": "25 mi", 
                                            "geo_location": {
                                                "lat": "37.7749295",
                                                "lon": "-122.41941550000001"
                                            }
                                        }
                                    }
                                }
                            ]
                        }
                      ,
                        "bool": {
                          "must": [
                                { "match": {"dispensary.delivery": "1"} }
                                ,{"match": {"zip_code": "94116"} }
                            ]
                        }
                    }
                ]
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2020-01-10
      • 2019-01-12
      • 2014-10-11
      • 2021-05-19
      • 2012-10-18
      • 1970-01-01
      • 1970-01-01
      • 2019-07-29
      • 2018-11-01
      相关资源
      最近更新 更多