elasticsearch中geo_shape查询踩坑记录

参考链接:https://github.com/elastic/elasticsearch/issues/32805
问题发现:
当我用下面的查询方法进行查询的时候,发现没有结果,但是index里面是有数据的

GET app_tzn_test_service_tzn_test3_kdm_ctserver/service_tzn_test3/_search
{ 
  "query" : {
    "bool" : {
      "must" : [
        {
          "geo_shape" : {
            "locationshape" : {
              "shape" : {
                "type" : "polygon",
                "coordinates" : [
                  [
                    [
                      -179,
                      90
                    ],
                    [
                      180.0,
                      90
                    ],
                    [
                      180.0,
                      -90
                    ],
                    [
                      -179,
                      -90
                    ],
                    [
                      -179,
                      90
                    ]
                  ]
                ]
              },
              "relation" : "within"
            },
            "boost" : 1.0
          }
        }
      ],
      "disable_coord" : false,
      "adjust_pure_negative" : true,
      "boost" : 1.0
    }
  }
}

elasticsearch中geo_shape查询踩坑记录_第1张图片
通过网上查询相关问题发现:
Elasticsearch接受顺时针和逆时针多边形如果出现不跨越国际日期变更线(即他们跨经度的小于180°),但对于多边形,跨越国际日期变更线(或其他多边形超出180°)Elasticsearch要求顶点顺序遵循OGC和GeoJSON规范。否则,可以创建一个意想不到的多边形和意想不到的查询将返回/过滤结果。
OGC规范:GeoJSON要求外多边形必须逆时针方向和内部多边形必须是顺时针方向

上面查询的问题在于经度差大于180,所以多边形必须要逆时针,改成下面逆时针的方式,就能查询到结果。

GET app_tzn_test_service_tzn_test3_kdm_ctserver/service_tzn_test3/_search
{
  "query" : {
    "bool" : {
      "must" : [
        {
          "geo_shape" : {
            "locationshape" : {
              "shape" : {
                "type" : "polygon",
                "coordinates" : [
                  [
                    [
                      -179,
                      90
                    ],
                    [
                      -179.0,
                      -90
                    ],
                    [
                      180.0,
                      -90
                    ],
                    [
                      180,
                      90
                    ],
                    [
                      -179,
                      90
                    ]
                  ]
                ]
              },
              "relation" : "within"
            },
            "boost" : 1.0
          }
        }
      ],
      "disable_coord" : false,
      "adjust_pure_negative" : true,
      "boost" : 1.0
    }
  }
}

elasticsearch中geo_shape查询踩坑记录_第2张图片

你可能感兴趣的:(elasticsearch中geo_shape查询踩坑记录)