我目前正在基于这样的单行弹性查询(示例)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"
}
}
]
}
}
}
}
}
}
}
我是否仍可以将该查询转换为 嵌入式 弹性查询以与 esJsonRDD 一起使用?或者是有反正上面的查询仍可使用 的是 与
esJsonRDD ?如果没有,在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)
问题内容: 假设我有: 每个产品都有属性。每个属性都有ID和一个值。我可以按属性筛选产品,但现在我要从MongoDB创建“可能的属性”列表。我想找到一种单独从ElasticSearch生成这样的列表的方法(也许只是向MongoDB查询其他数据)。 我需要的是: 这样的聚合看起来如何?获取所有可用属性(按分组)及其所有可能值(在所有产品中)? 问题答案: 您无法在一个查询中做到这一点,但在两个查询中
问题内容: 我有一个包含嵌套对象的文档,如下所示: 现在,我需要按书名(不是book_title)和年份(比如2014)来过滤书籍。我需要的输出将是: 当我使用嵌套过滤器时,即使它们不匹配,我也会得到所有嵌套对象。如何仅获取匹配的嵌套对象? 问题答案: 您需要使用以下嵌套功能。 在输出中,您将确切地获得期望的结果,即字段和嵌套数组中的匹配书。
问题内容: 我有一个类似下面的查询, 但是由于我的ID过滤器,我的构面未过滤。我得到了所有方面,但我希望通过上面的ID过滤器对其进行过滤。你有什么想法 ? 问题答案: 尽管您的工作可行,但更干净的解决方案是使用过滤查询。 http://www.elasticsearch.org/guide/reference/query-dsl/filtered- query/ 允许您使用原始查询+一些任意过滤器
问题内容: 我正在尝试搜索日期范围内的日期范围内的所有项目,但失败(不返回任何结果) 查询: 映射: 结果是: 通过一个带数字值的整数字段(“ cards”)的范围过滤的同一查询工作正常。将日期更改为非常早的开始(1900-01-01 00:00:00)也不会显示任何结果。 我究竟做错了什么? 顺便说一句,我知道我在映射中启用了_timestamp,但这不是我要过滤的字段。 问题答案: 似乎对我来
问题内容: 我正在为ElasticSearch配置JDBC河,但找不到任何好的配置示例。我已经阅读了Elasticsearch-river- jdbc GitHub上的所有页面。 我有一个SQL查询,我需要每X秒从所有表列中获取更改。我如何告诉JDBC river某些行已更改并应重新索引? 在ES服务器启动期间获取数据,正在进行轮询,但是没有从DB到ES获取更改。 我的配置: 谢谢。 问题答案:
不知道如何表达这个问题。我正在使用Elasticsearch 2.2。 让我们从数据集的一个示例开始,该数据集由5个文档组成: 被调用的\u实体始终具有uuid。coverage\u实体可以为空,也可以具有uuid。 我使用脚本在任何一个被调用的\实体上进行聚合。uuid或coverage\u实体。uuid: 现在,聚合已经从任一头生成了术语。调用了\u实体。uuid或标头。coverage\u实