我试图用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()
`
答案 0 :(得分:1)
尝试在config中将es.read.field.include
设置为逗号分隔字段列表。
例如"es.read.field.include","field1,field2,..."