我有一张 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/