elasticsearch - 应用程序侧加入Elasticsearch

标签 elasticsearch join kibana

我在Elasticsearch中有两个索引,一个system索引和一个telemetry索引。我想使用系统索引中的过滤器对遥测索引执行查询和聚合。系统索引相对较小,偶尔仅接收新文档,但是遥测索引却要大得多,并且不断接收新文档。这似乎是使用application-side join的理想情况。

我尝试在上一个链接上模拟示例查询,但事实证明filtered查询是deprecated as of ES 5.0。 (为什么在当前文档中有此示例?!)

这是我的查询:

GET /system/_search
{
  "query": {
    "match": {
      "name": "George's system"
    }
  }
}

GET /telemetry/_search
{
  "query": {
    "bool":{
      "must": {
        "multi_match": {
          "operator": "and",
          "fields": ["systemId"]
          , [1] }  
        }
      }
    }
  }
}

第二个失败,并带有json_parse_exception,因为由于某种原因,它不喜欢“fields”之后的[]字符。

谁能提供使用应用程序侧联接的简单示例?

定义了此类查询后(也许在Kibana的Dev Tools控制台中),是否可以在Kibana中将其可视化?

最佳答案

使用Elastic无法像在关系数据库中那样执行两个嵌套查询,第一个查询使用第二个查询的响应。 application-side join中的示例意味着您实际上是在应用程序端进行两个查询(两个不同的 flex 请求)。

  • 首先查询您需要过滤的ID列表。
  • 第二个查询,您将获得的ID列表传递给条件过滤器。

  • 当systemId的值不超过1024个时,此方法有效。因为术语查询对术语数量有限制。

    由于此查询不可行,因此您无法在kibana中对其进行可视化。

    在这种情况下,您必须牺牲一点空间,并将systemId添加到映射中。

    祝好运!

    关于elasticsearch - 应用程序侧加入Elasticsearch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52820201/

    相关文章:

    docker - 在docker下运行API时,Kibana中没有日志

    mysql - group_concat 在 MySQL 中有多个连接

    elasticsearch - Kibana 返回 "Connection Failed"

    PHP搜索框问题

    SQL如何通过连接获取数组的选择属性?

    elasticsearch - 如何使用FileBeat将管道分隔格式的日志数据以JSON格式发送到Elasticsearch?

    macos - 无法在Kibana上安装样本数据集-禁止的错误

    elasticsearch - 如何通过ID和过滤字段值进行过滤?

    elasticsearch - 需要对elasticsearch聚合结果中的_term进行排序

    elasticsearch - Elasticsearch 错误-[前缀]查询不支持[前缀]