如何通过元数据字段(例如,通过_id)过滤从Elasticsearch读取的PySpark SQL数据帧?

时间:2019-06-05 09:17:38

标签: pyspark pyspark-sql elasticsearch-spark

我正在使用es.read.metadata=True的读取选项从Elasticsearch索引读取PySpark SQL数据框。我想按元数据字段上的条件过滤数据,但是得到一个空结果,尽管应该有结果。有可能获得实际结果吗?

当我在数据帧上使用limit时,即使有很大的数字,甚至比数据帧的大小都大,我的确得到了结果。

此外,当使用其他非_metadata相关字段时,我确实得到了结果。

例如:

df.where(df._metadata._score > 1.0).select(df._metadata._id).show()

结果为空:

+--------------+
|_metadata[_id]|
+--------------+
+--------------+

但是使用limit时:

df.limit(1000000).where(df._metadata._score > 1.0).select(df._metadata._id).show()

结果不为空

+--------------------+
|      _metadata[_id]|
+--------------------+
|cICqm2gBHl8Vy6RZyu_L|
+--------------------+

0 个答案:

没有答案