基于Terms Query by index的Kibana仪表盘可视化创建问题
解决方案:基于跨索引Terms Query的Kibana仪表盘可视化
问题1:将Discover中的DSL过滤应用到可视化
你可以通过保存查询的方式把Discover里的过滤逻辑复用在可视化中:
- 在Discover页面,确认DSL过滤生效后,点击顶部的「保存」按钮,给这个查询命名(比如「Dev环境关联Test类型数据」)。
- 创建/编辑可视化时,在「数据源」区域选择「已保存的查询」,选中你刚才保存的查询即可。
- 若需直接在可视化中编写DSL,确保跨索引terms查询的参数(
index、id、path)与主索引字段匹配,同时确认Kibana具备访问test-type-index的权限。
你的原始DSL如下:
{ "query": { "bool": { "must": [ { "terms": { "test.type.name": { "index": "test-type-index", "id": "unit-test", "path": "type.name" } } }, { "term": { "test.env": { "value": "dev" } } } ] } } }
问题2:创建ID选项列表并关联type.name过滤
通过Kibana的控制面板和查询变量实现联动过滤:
- 添加ID下拉列表控制面板
- 进入仪表盘编辑页,添加「控制面板」组件,选择「下拉列表」类型。
- 数据源选择
test-type-index,字段选择_id,下拉列表会自动加载该索引下所有文档的ID(如示例中的unit-test)。
- 创建查询变量提取type.name值
- 进入「Stack Management」→「变量」→「创建变量」,类型选「查询」。
- 查询语句填写(替换
${id-control}为你刚才创建的下拉列表名称):{ "query": { "match": { "_id": "${id-control}" } }, "size": 1, "_source": ["type.name"] } - 在「提取」设置中填写
_source.type.*.name,将选中ID对应的所有type.name值提取为数组。
- 在目标可视化中应用变量过滤
- 编辑目标可视化,添加过滤条件:选择「terms」查询,字段为
test.type.name,值选择你创建的查询变量。 - 可额外添加
test.env: dev的过滤条件,限定环境范围。
- 编辑目标可视化,添加过滤条件:选择「terms」查询,字段为
补充说明
- 确保
test-type-index的type.name字段映射为可搜索类型(如text或keyword)。 - 若下拉列表未显示ID,检查该索引的
_id字段是否在Kibana索引模式中被设置为可显示字段。
内容的提问来源于stack exchange,提问作者Gadelkareem
相关产品推荐
相关产品推荐

