美文网首页
Elasticsearch geo_bounding_box 按

Elasticsearch geo_bounding_box 按

作者: 一位先生_ | 来源:发表于2022-06-03 13:02 被阅读0次

    ES中通过geo_bounding_box搜索,在地图画一个矩形,搜索矩形范围内的坐标点。

    例如:

    在地图画一个矩形,把矩形范围内的店铺找出来。

    GET /shops/_search
    {
      "query": {
        "bool": { // 布尔组合查询
          "must": {
            "match_all": {} // 这里设置其他搜索条件,直接搜索所有文档
          },
          "filter": { // 地理信息搜索不打算参与相关度评分,所以使用filter包裹起来。
            "geo_bounding_box": { // geo_bounding_box实现按矩形范围搜索
              "location": { // 店铺的坐标点保存在location字段中
                "top_left": { // 设置矩形的左上角坐标
                  "lat": 40.73, // 纬度
                  "lon": -74.1 // 经度
                },
                "bottom_right": { // 设置矩形的右下角坐标
                  "lat": 40.717,
                  "lon": -73.99
                }
              }
            }
          }
        }
      },
      "sort": [ // 设置排序条件
        {
          "_geo_distance": { // _geo_distance代表按距离排序
            "location": { // 计算 location保存的坐标和当前坐标的距离
              "lat": 40, // 当前纬度
              "lon": -70 // 当前经度
            },
            "order": "asc" // 根据距离升序排序
          }
        }
      ]
    }
    

    说明:

    按矩形范围搜索店铺,如果需要对搜索的结果按距离排序,需要指定一个当前参考坐标,否则ES无法计算距离,也就是无法按距离排序。

    相关文章

      网友评论

          本文标题:Elasticsearch geo_bounding_box 按

          本文链接:https://www.haomeiwen.com/subject/sgnfsrtx.html