0

我有一张地图如下:

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

我的弹性数据有一个名为“名称”的字段。我想从 spark 查询弹性搜索并返回所有具有“a”、“b”、“c”作为“name”字段值的记录。

我不想硬编码弹性查询中的名称。

 session.read.format("org.elasticsearch.spark.sql")
  .option("es.query", query)
  .load(indexName)

有人可以帮我构建一个动态查询,它接受字符串列表。

4

1 回答 1

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

习惯了这个并解决了。

于 2020-01-13T10:38:56.810 回答