【问题标题】:How to put mapping in json files with Elasticsearch如何使用 Elasticsearch 将映射放入 json 文件中
【发布时间】:2017-04-23 02:22:09
【问题描述】:

我有很多具有这种结构的 JSON 文档:

"positions": [
    {
      "millis": 12959023,
      "lat": 49.01525113731623,
      "lon": 2.4971945118159056,
      "rawX": -3754,
      "rawY": 605,
      "rawVx": 0,
      "rawVy": 0,
      "speed": 9.801029291617944,
      "accel": 0.09442740907572084,
      "grounded": true
    },
    {
      "millis": 12959914,
      "lat": 49.01536940596998,
      "lon": 2.4967825412750244,
      "rawX": -3784,
      "rawY": 619,
      "rawVx": -15,
      "rawVy": 7,
      "speed": 10.841861737855924,
      "accel": -0.09534648619563282,
      "grounded": true
    }
...
}

我正在尝试通过引入 geo_point 字段来将此 JSON 文档与 Elasticsearch 映射,以获取如下所示的文档:

"positions": [
        {
          "millis": 12959023,
          "location" : {
              "lat": 49.01525113731623,
              "lon": 2.4971945118159056,
           }          
          "rawX": -3754,
          "rawY": 605,
          "rawVx": 0,
          "rawVy": 0,
          "speed": 9.801029291617944,
          "accel": 0.09442740907572084,
          "grounded": true
        },
    ...
    }

PS:这些文档由 API 提供。

谢谢

【问题讨论】:

  • 如何将文档加载到 ES 中?可能,Logstash 将有助于创建 geo_point 字段,或者如果您使用 ES5,您可以使用管道/处理器来实现相同的目的。

标签: json elasticsearch mapping geopoints nosql


【解决方案1】:

你可以这样做:

curl -XPUT 'http://localhost:9200/<indexname>/positions/_mapping' -d @yourjsonfile.json

希望SO 有帮助!

【讨论】:

  • 如果出现错误:"error":"Content-Type header [application/x-www-form-urlencoded] is not supported" 然后添加 -H "Content-Type: application/json" 可能会有所帮助
【解决方案2】:

如果您无法修改源代码,则需要在将文档编入 elasticsearch 索引之前对其进行预处理。

  • 如果您使用的是弹性搜索 mutate filter。
  • 如果您使用的是 elasticsearch >= 5.0(我的 建议),使用摄取管道和rename processor

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-22
    • 2014-12-25
    • 1970-01-01
    • 2021-01-01
    • 2017-06-29
    • 1970-01-01
    • 2021-09-29
    相关资源
    最近更新 更多