You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在OpenSearch中提取字段所有唯一值并在Grafana中创建变量

在OpenSearch中提取字段唯一值并在Grafana中创建变量

一、OpenSearch中直接提取唯一值

如果要直接通过OpenSearch API获取字段的所有唯一值,最稳妥的方式是使用聚合查询——你提到的find: terms本质也是基于聚合实现的,聚合查询能让你更灵活控制返回结果:

curl -X GET "http://your-opensearch-host:9200/your-index-name/_search" -H "Content-Type: application/json" -d'
{
  "size": 0,  # 不返回原始文档,只输出聚合结果
  "aggs": {
    "unique_first_names": {
      "terms": {
        "field": "first_name.keyword",  # 注意:如果字段是text类型,必须用keyword子字段避免分词
        "size": 10000  # 调整该值获取更多唯一值,默认返回10条,最大可设为10000
      }
    }
  }
}'

如果你的first_name字段本身就是keyword类型(不会被分词),直接写"field": "first_name"即可。

二、在Grafana中用该语法创建变量

你用到的{"find": "terms", "field": "first_name"}正是Grafana针对OpenSearch数据源的变量查询语法,具体操作步骤:

  1. 进入目标仪表盘的设置页面,选择变量 -> 新建变量
  2. 变量类型选查询,数据源指定你的OpenSearch实例
  3. 在查询输入框中填写:
    {"find": "terms", "field": "first_name.keyword", "size": 10000}
    
    字段为keyword类型时去掉.keyword后缀
  4. 可选配置:设置排序规则、添加正则过滤不需要的值、勾选“包含全部选项”等
  5. 保存变量后,就能在面板查询条件中用这个变量动态筛选数据了

注意事项

  • 如果返回的唯一值数量不够,检查size参数是否合理;若需要超过10000条,得修改OpenSearch集群的search.max_terms_count配置
  • 确保目标索引中first_name字段存在且有数据,否则会返回空结果

内容的提问来源于stack exchange,提问作者skasar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 06:55:22