Spark -asticsearch извлекает отфильтрованные записи изasticsearch, используя искру - PullRequest
0 голосов
/ 13 января 2020

У меня есть карта, которая выглядит следующим образом:

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

В моих данных об elasti c есть поле с именем "names". Я хочу запросить elasti c search from spark и вернуть все записи, которые имеют "a", "b", "c" в качестве значения поля "name".

Я не хочу жестко закодируйте имена в запросе elasti c.

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

Может кто-нибудь помочь мне с созданием динамического c запроса для того же самого, который принимает список строк.

1 Ответ

0 голосов
/ 13 января 2020
 val listOfIds = List("a", "b")
 val strings = listOfIds.mkString("[\"", "\",\"", "\"]")
 val query = s"""{"query":{"filtered":{"query":{"match_all":{}},"filter": 
 {"terms":{"genres":${strings}}}}}"""

Привык к этому и решил.

...