当前位置: 首页 > 知识库问答 >
问题:

Geojson到Elasticsearch:无法解析类型[geo_shape的字段[geometry.coordinates]

齐向笛
2023-03-14

我正在尝试使用Python将geojson文件索引到elasticsearch(7.6.2版)中。

这是我在elasticsearch中定义的映射。

'mappings': {
  "properties": {
    "geometry": {
      "properties": {
        "coordinates": {
          "type": "geo_shape"
        },
        "type": {
          "type": "text",
          "fields": {
            "keyword": {
              "type": "keyword",
              "ignore_above": 256
            }
          }
        }
      }
    },    
 }
}

geojson文件如下所示:

{
"type": "FeatureCollection",
"name": "testting",
"crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } },
"features": [
{ "type": "Feature", "properties": { "LEGEND": "x_1", "THRESHOLD": -109, "COLOR": "0 0 255", "Prediction": "Coverage" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 151.20061069847705, -33.886918725260998 ], [ 151.200620164862698, -33.886467994010133 ].....

然而,当我将文件写入Elasticsearch时,灵感来自以下链接:

如何在elasticsearch索引Geojson文件?

def geojson2es(gj):
    for feature in gj['features']:
        yield feature

with open(input_path+'/'+ data) as f:
    gj = json.load(f)

    es = Elasticsearch(hosts=[{'host': 'localhost', 'port': 9200}])

    k = [{
        "_index": "test",
        "_source": feature,
    } for feature in geojson2es(gj)]

    helpers.bulk(es, k)

我有这个错误:

{'type':'mapper_parsing_exception','reason':'未能分析[geo_shape]类型的字段[geometry.coordinates],'由':{'type':'parse_exception','reason':'shape必须是由类型和坐标组成的对象'}

有人遇到过类似的问题吗?我怎么才能修好它?

共有1个答案

辛才俊
2023-03-14

你的映射不正确。geo_shape类型已经暗示了类型坐标,因此您不需要再次声明它们。

因此,您的映射应该是这样的,即每个特征都有一个类型(例如Feature,一个属性的哈希和类型geo_shape几何):

{
  "mappings": {
    "properties": {
      "type": {
        "type": "keyword"
      },
      "properties": {
        "type": "object"
      },
      "geometry": {
        "type": "geo_shape"
      }
    }
  }
}
 类似资料:
  • 我试图索引很多记录,但当索引字段时,我面临一些麻烦。默认情况下,我将该字段映射为日期和格式,但我得到了这个错误: 错误:400{“Error”:{“root_cause”:[{“type”:“mapper_parsing_exception”,“reason”:“未能解析[date]“}]类型的字段[publish_up],“type”:“mapper_parsing_exception”,“re

  • 问题内容: 这是我得到的错误: 这是我的代码: 另外,我在一个单独的类中声明了这一点: 是什么导致此错误,我该如何解决? 编辑:缩进,空格,命名约定和可读性问题已得到解决。 问题答案: 问题在于,这似乎是一个内部类(很难说,您的缩进是不好的),并且由于它不是静态的,因此您无法单独实例化它。 您要么需要自己创建一个类,要么使其成为一个类并将其实例化为(或者无论父类是什么,您的缩进在这里实际上都没有帮

  • 问题内容: 我正在建立搜索,但需要使用不同的分析器分析1个字段。我的问题是,对于一个字段,我需要在其上安装一个分析器以进行词干分析(雪球),然后还需要一个分析器将完整的单词保留为一个标记(关键字)。我可以通过以下索引设置来使其工作: 在标题字段中搜索单个单词时出现问题。如果其中装有“帽子里的猫”,它将存储为“帽子里的猫”,但是如果我搜索猫,我什么也得不到。 这是否有可能实现?还是我需要有2个单独的

  • 问题内容: 尝试遵循本教程:教程 尝试像这样使用 JSONParser : 但是Eclipse给了我。 该怎么办? 问题答案: JSONParser类在本教程的下方,它看起来像这样…… 我会考虑看看杰克逊图书馆通过http://jackson.codehaus.org/

  • 问题内容: 我从git下载了Android的Browser项目并将其导入到Eclipse。但是由于以下错误,我无法构建它: 无法解析类型java.lang.Enum。从所需的.class文件间接引用它 现在…这是一个开发环境,对于其他项目来说效果很好: Windows 7 Ultimate 64位。 JDK 64位(已安装jdk-6u23-windows-x64.exe。) Eclipse Cla