在Spark中使用复杂过滤从Elasticsearch获取esJsonRDD

我目前正在基于这样的单行弹性查询(示例)elasticsearchSpark Job过滤中获取RDD :

val elasticRdds = sparkContext.esJsonRDD(esIndex, s"?default_operator=AND&q=director.name:DAVID + \n movie.name:SEVEN")

现在,如果我们的搜索查询变得复杂,例如:

{

"query": {

"filtered": {

"query": {

"query_string": {

"default_operator": "AND",

"query": "director.name:DAVID + \n movie.name:SEVEN"

}

},

"filter": {

"nested": {

"path": "movieStatus.boxoffice.status",

"query": {

"bool": {

"must": [

{

"match": {

"movieStatus.boxoffice.status.rating": "A"

}

},

{

"match": {

"movieStatus.boxoffice.status.oscar": "false"

}

}

]

}

}

}

}

}

}

}

我是否仍可以将该查询转换为 弹性查询以与 一起使用?或者是有反正上面的查询仍可使用 与

?如果没有,在Spark中获取此类RDD的更好方法是什么?

因为esJsonRDD似乎只接受内联(一行)弹性查询。

回答:

使用三引号:

val query = """{

"query": {

"filtered": {

"query": {

"query_string": {

"default_operator": "AND",

"query": "director.name:DAVID + \n movie.name:SEVEN"

}

},

"filter": {

"nested": {

"path": "movieStatus.boxoffice.status",

"query": {

"bool": {

"must": [

{

"match": {

"movieStatus.boxoffice.status.rating": "A"

}

},

{

"match": {

"movieStatus.boxoffice.status.oscar": "false"

}

}

]

}

}

}

}

}

}

}"""

val elasticRdds = sparkContext.esJsonRDD(esIndex, query)

以上是 在Spark中使用复杂过滤从Elasticsearch获取esJsonRDD 的全部内容, 来源链接: utcz.com/qa/430809.html

回到顶部