scala - Spark-Elasticsearch使用Spark从Elasticsearch获取过滤的记录

标签 scala dataframe apache-spark elasticsearch elasticsearch-spark

我有一张 map ,如下所示:

 Map("index1" -> List["a", "b", "c"])

我在Elastic上的数据有一个名为“名称”的字段。我想从spark查询 Elasticsearch ,并返回所有具有“a”,“b”,“c”作为“名称”字段值的记录。

我不想在 flex 查询中对名称进行硬编码。
 session.read.format("org.elasticsearch.spark.sql")
  .option("es.query", query)
  .load(indexName)

有人可以帮我构筑一个动态查询来接受字符串列表吗?

最佳答案

 val listOfIds = List("a", "b")
 val strings = listOfIds.mkString("[\"", "\",\"", "\"]")
 val query = s"""{"query":{"filtered":{"query":{"match_all":{}},"filter": 
 {"terms":{"genres":${strings}}}}}"""

习惯了这一点并解决了。

关于scala - Spark-Elasticsearch使用Spark从Elasticsearch获取过滤的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59714470/

相关文章:

scala - 如何使用 HList 现有成员创建类型类

scala - 每个 Spark UDAF 都可以与 Window 一起使用吗?

根据向量重复数据框中的行

scala - Spark 数据集和方差

scala - 从 Spark scala 中的数据帧创建 map

scala - 如何在 play/activator 中设置堆大小?

python - 获取 groupby 和 nlargest 之后的行索引

apache-spark - Spark SQL 中的 Parquet 文件

apache-spark - Scala 的 Apache Toree 语法高亮

apache-spark - Spark 重新分区落入单个分区