ElasticSearchGeop Shape查询不起作用

dced5bon  于 2022-11-22  发布在  ElasticSearch
关注(0)|答案(1)|浏览(149)

我的一个文档(id = emergency)是一个半径为30000米的圆:

GET seller-67/_doc/emergency
    {
      "_index": "seller-67",
      "_type": "_doc",
      "_id": "emergency",
      "_version": 1,
      "_seq_no": 0,
      "_primary_term": 1,
      "found": true,
      "_source": {
        "location": {
          "type": "circle",
          "coordinates": [
            99.8131968,
            13.550437
          ],
          "radius": "30000m"
        }
      }
    }

我想知道
纬度= 13.7054285,经度= 99.5806321
就在这个圈子里。
为此,我使用以下请求:

POST seller-67/_search
    {
      "query": {
        "bool": {
          "filter": [
            {
              "geo_shape": {
                "location": {
                  "shape": {
                    "type": "point",
                    "coordinates": [
                      99.5806321,
                      13.7054285
                    ]
                  }
                }
              }
            }
          ]
        }
      }
    }

答案如下:

{
      "took" : 0,
      "timed_out" : false,
      "_shards" : {
        "total" : 1,
        "successful" : 1,
        "skipped" : 0,
        "failed" : 0
      },
      "hits" : {
        "total" : {
          "value" : 1,
          "relation" : "eq"
        },
        "max_score" : 1.0,
        "hits" : [
          {
            "_index" : "seller-67",
            "_type" : "_doc",
            "_id" : "emergency",
            "_score" : 1.0,
            "_source" : {
              "location" : {
                "coordinates" : [
                  99.8131968,
                  13.550437
                ],
                "type" : "circle",
                "radius" : "30000m"
              }
            }
          }
        ]
      }
    }

因此,根据答案,点lat = 13.7054285,lon = 99.5806321位于文件紧急情况(半径为30000m的圆,圆心:lat = 13.550437,lon = 99.8131968)但是当我计算这两个点之间的距离时,结果是3045m。
既然3045〉3000,为什么elasticsearch会对我的请求返回这个结果呢?

3j86kqsm

3j86kqsm1#

Tldr;

你好,在最新版本的elasticsearch中,圆不是一个原生的形状。它们使用polygons to approximate a circle
你会在引擎盖下使用这个吗?这可以解释错误?因为它嵌在管道中。

相关问题