elasticsearch,pyspark,Hadoop,Apache Spark,elasticsearch,Pyspark" /> elasticsearch,pyspark,Hadoop,Apache Spark,elasticsearch,Pyspark" />

Hadoop Pyspark es.query仅在默认情况下工作

Hadoop Pyspark es.query仅在默认情况下工作,hadoop,apache-spark,elasticsearch,pyspark,Hadoop,Apache Spark,elasticsearch,Pyspark,在PypPark中,获取ES返回的数据的唯一方法是保留ES.query默认值。为什么会这样 es_query = {"match" : {"key" : "value"}} es_conf = {"es.nodes" : "localhost", "es.resource" : "index/type", "es.query" : json.dumps(es_query)} rdd = sc.newAPIHadoopRDD(inputFormatClass="org.elasticsearch.

在PypPark中,获取ES返回的数据的唯一方法是保留ES.query默认值。为什么会这样

es_query = {"match" : {"key" : "value"}}
es_conf = {"es.nodes" : "localhost", "es.resource" : "index/type", "es.query" : json.dumps(es_query)}
rdd = sc.newAPIHadoopRDD(inputFormatClass="org.elasticsearch.hadoop.mr.EsInputFormat",keyClass="org.apache.hadoop.io.NullWritable",valueClass="org.elasticsearch.hadoop.mr.LinkedMapWritable", conf=es_conf)
...
rdd.count()
0
rdd.first()
ValueError: RDD is empty
然而,这个查询(默认)似乎有效

es_query = {"match_all" : {}}
...
rdd.first()
(u'2017-01-01 23:59:59)
*我已经通过直接查询弹性搜索测试了查询,它们工作正常,因此spark/es hadoop有问题。

默认情况下,API会在实际查询之前添加“查询”:{}。 对于elasticsearch,您发送的查询如下所示

"query" :{
"match" : {"key" : "value"}
}
这是无效的

默认情况下,API会在实际查询前面添加“查询”:{}。 对于elasticsearch,您发送的查询如下所示

"query" :{
"match" : {"key" : "value"}
}

这是无效的

Juist确认,您在查询定义和
rdd.first()
调用之间使用相同的命令,对吗?是的,除了es\u查询之外的所有内容都保持不变。Juist确认,您在查询定义和
rdd.first()
调用之间使用相同的命令,对吗?是,除es_查询外,所有内容都保持不变。