elasticsearch-pyspark:即使在指定spark之后,也没有从文档中获取特定字段(获取所有字段)

时间:2018-05-10 09:35:42

标签: elasticsearch pyspark

我试图用pyspark从elasticsearch中提取一些数据。我想从文档中只提取少数字段(不是全部)。所以,我正在通过该软件提出邮寄请求" Postman" (用于测试目的)具有以下网址和正文。它按预期提供完美输出。但是,当我使用带有火花代码的相同主体时,它会从指定的文档中提取所有不希望的字段。任何人都可以说出这种奇怪行为可能是什么原因?提前谢谢!

Spark版本2.3,Elasticsearch版本6.2,邮递员正文类型= application / json

这就是我对邮递员所做的事情:

`url : localhost:9200/test-index4/school/_search`

`body : 
{
    "query":
     {
         "ids":
           {
               "values":["8","9","10"]
           }
     },
     "_source":
     {
         "includes":["name"]
     }
}`

以下是我对pyspark所做的事情:

`body = "{"query":{"ids":{"values":["8","9","10"]}},"_source":{"includes":["name"]}}"
df = self.__sql_context.read.format("org.elasticsearch.spark.sql") \
            .option("es.nodes", "localhost") \
            .option("es.port", "9200") \
            .option("es.query", body) \
            .option("es.resource", "test-index4/school") \
            .option("es.read.metadata", "true") \
            .option("es.read.metadata.version", "true") \
            .option("es.read.field.as.array.include", "true") \
            .load()

`

1 个答案:

答案 0 :(得分:1)

尝试在config中将es.read.field.include设置为逗号分隔字段列表。 例如"es.read.field.include","field1,field2,..."