gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 00:55:49 27 4
gpt4 key购买 nike

我目前正在基于单行 flex 查询(例如)在elasticsearch过滤中获取Spark 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"
}
}
]
}
}
}
}
}
}
}

我是否仍可以将该查询转换为嵌入式 flex 查询,以与 esJsonRDD 一起使用?还是无论如何,上面的查询仍然可以和和 esJsonRDD 一起用于 吗?
如果没有,那么在Spark中获取此类RDD的更好方法是什么?

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

最佳答案

使用三引号:

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)

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

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com