我在Elasticsearch中有两个索引,一个system
索引和一个telemetry
索引。我想使用系统索引中的过滤器对遥测索引执行查询和聚合。系统索引相对较小,偶尔仅接收新文档,但是遥测索引要大得多,并且会不断接收新文档。这似乎是使用application-side join的理想情况。
我尝试在上一个链接上模拟示例查询,但事实证明filtered
查询是deprecated as of ES 5.0。 (为什么在 current 文档中有此示例?!)
这是我的疑问:
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
失败,因为某种原因,它不喜欢“字段”后的[]字符。
任何人都可以提供使用应用程序侧联接的简单示例吗?
一旦定义了这样的查询(也许在Kibana的Dev Tools控制台中),是否可以在Kibana中将其可视化?
答案 0 :(得分:0)
使用弹性,无法像关系数据库中那样执行两个嵌套查询,其中第一个查询使用第二个查询的响应。 application-side join中的示例意味着您实际上是在应用程序端进行两个查询(两个不同的弹性请求)。
当systemId的值不超过1024个时,此方法有效。因为字词查询对字词数量有限制。
由于该查询不可行,因此您无法在kibana中将其可视化。
在这种情况下,您必须牺牲一点空间并将systemId添加到映射中。
祝你好运!