我正在尝试使用 pyspark 从 elasticsearch 中提取一些数据。我只想从文档中提取几个字段(不是全部)。因此,我正在从软件“Postman”(用于测试目的)发出一个发布请求,其中包含以下 url 和正文。它按照预期提供了完美的输出。但是,当我将相同的主体与 Spark 代码一起使用时,它会从指定文档中提取所有字段,这是不需要的。谁能说出这种奇怪行为的原因是什么?提前致谢!
Spark 版本 2.3,Elasticsearch 版本 6.2,postman 正文类型 = application/json
这就是我对 postman 所做的事情:
`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()
`
最佳答案
尝试在配置中设置es.read.field.include
,并将值设置为逗号分隔的字段列表。
例如“es.read.field.include”,“field1,field2,...”
关于 Elasticsearch -pyspark : not getting specific fields from document (getting all fields) even after specifying with spark,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50269795/