elasticsearch,pyspark,Python,elasticsearch,Pyspark" /> elasticsearch,pyspark,Python,elasticsearch,Pyspark" />

Python 如何从PySpark保存Elasticsearch中的geo_点?

Python 如何从PySpark保存Elasticsearch中的geo_点?,python,elasticsearch,pyspark,Python,elasticsearch,Pyspark,我想在PySpark中创建一个数据帧并将其保存到Elasticsearch: from pyspark.sql import SparkSession from pyspark.sql.types import * from pyspark.sql import Row spark = SparkSession \ .builder \ .appName("Test") \ .master("local[4]") \ .config("es.nodes","lo

我想在PySpark中创建一个数据帧并将其保存到Elasticsearch:

from pyspark.sql import SparkSession
from pyspark.sql.types import *
from pyspark.sql import Row

spark = SparkSession \
    .builder \
    .appName("Test") \
    .master("local[4]") \
    .config("es.nodes","localhost") \
    .config("es.port",9200) \
    .config("es.nodes.wan.only","true") \
    .getOrCreate()

schema = StructType([StructField('id', StringType()), \
                     StructField('timestamp',LongType()), \
                     StructField('coordinates',ArrayType(DoubleType())])
rows = [Row(id="11", timestamp=1523975430000, coordinates = [41.5555, 2.1522])]

df = spark.createDataFrame(rows, schema)

df.write \
        .format("org.elasticsearch.spark.sql") \
        .mode('append') \
        .option("es.resource", "myindex/intensity") \
        .save()
这是Elasticsearch中的索引
myindex
及其映射
intensity
,我想在其中保存数据:

{
    "mappings": {
        "intensity": {

        "properties": {
          "id": {
            "type":"keyword"
          },
          "timestamp": {
            "type":"date"
          },
          "coordinates": {
            "type":"geo_point"
          }
        }
      }
    }
}
问题发生在
地理点
上。应按如下方式保存:

"coordinates": {
  "lat": 41.5555,
  "lon": 2.1522
}
"coordinates": [
  41.5555,
  2.1522
]
但在我的情况下,它保存如下:

"coordinates": {
  "lat": 41.5555,
  "lon": 2.1522
}
"coordinates": [
  41.5555,
  2.1522
]