首页 > 解决方案 > 使用 AWS ElasticSearch 服务实例将包含地理纬度和纬度的两个浮点字段映射到 kibana 中的 geo_point

问题描述

我正在构建一个解决方案,通过 kinesis 流和 firehose 从 Lambda(Python 2.7)处理数据到 Elastic Search 域。数据存储在 Python 字典中并作为 JSON 转储到 Kinesis

                dataDictionary = {
                "precipitationType": precipitationType,
                "location": location,
                "humidity" : humidity,
                "groundTemp": groundTemp,
                "airTemp": airTemp,
                "windSpeed": windSpeed,
                "windDirection": windDirection,
                "measureDate": parsedMeasureDate,
                "systemDate": systemDate,
                "stationGeoLatitude": stationGeoLatitude,
                "stationGeoLongitude": stationGeoLongitude
            }
            #Push data to AWS Kinesis Stream
            res = kinesis.put_record(StreamName = LocalStreamName,Data=json.dumps(dataDictionary),PartitionKey='systemDate')

过程成功,但想在 Kibana的地图上显示结果,我只有两个浮点字段,没有geo_point/geohash 字段

我不知道如何在 AWS ElasticSearch Service 中映射它们。我找到了一些关于映射的文档,但我不知道如何在 AWS 中使用它。也许我应该在 Python 代码中以其他方式传递这些数据?

标签: pythonamazon-web-serviceselasticsearchkibana

解决方案


您必须使用映射并告诉 elasticsearch 将您的 2 个字段映射为地理位置:

https://www.elastic.co/guide/en/elasticsearch/reference/current/geo-point.html

您将不得不重新索引您的数据,但首先指定您的映射。

您可以使用 python 客户端执行此操作,或手动发布 json 映射:

把你的索引

{
  "mappings": {
    "your_type": {
      "properties": {
        "location": {
          "type": "geo_point"
        }
      }
    }
  }
}

推荐阅读