You need to enable JavaScript to run this app. Kibana中查询两个geo_bounding_box数据集共有的username实现方案
优惠活动
大模型
产品
解决方案
定价
更多

Kibana中查询两个geo_bounding_box数据集共有的username实现方案

结论

你描述的需求完全可以在Kibana中实现,你提到的地图框选区域生成数据集的操作可以直接作为筛选条件,配合聚合规则即可得到目标结果,具体操作如下:


方法1:可视化界面操作(无需写查询语句)

  • 新建Lens数据表可视化,数据源选择你的request索引
  • 添加两个geo_bounding_box过滤器,逻辑关系设为「或(OR)」:
    • 过滤器1:字段选location,运算符选「是在边界框内」,设置第一个区域的经纬度范围,命名为区域A
    • 过滤器2:字段选location,运算符选「是在边界框内」,设置第二个区域的经纬度范围,命名为区域B
      如果你习惯用地图操作,也可以直接在Kibana地图组件中分别框选两个区域生成对应过滤器,和上述配置效果一致
  • 配置聚合规则:
    1. 行维度选择username.keyword字段,用来按用户名精确值分组
    2. 新增两个「唯一计数」指标:
      • 第一个指标筛选条件限定为区域A,统计字段选id,命名为「区域A出现次数」
      • 第二个指标筛选条件限定为区域B,统计字段选id,命名为「区域B出现次数」
  • 最后添加筛选条件,保留「区域A出现次数≥1」且「区域B出现次数≥1」的分组,剩余的列表就是同时在两个数据集中出现过的用户名。

方法2:Dev Tools直接运行DSL查询

如果需要直接获取原始查询结果,可以在Kibana Dev Tools中执行如下DSL:

GET /request/_search
{
  "size": 0,
  "query": {
    "bool": {
      "should": [
        {
          "geo_bounding_box": {
            "location": {
              "top_left": { "lat": 第一个区域左上角纬度, "lon": 第一个区域左上角经度 },
              "bottom_right": { "lat": 第一个区域右下角纬度, "lon": 第一个区域右下角经度 }
            }
          }
        },
        {
          "geo_bounding_box": {
            "location": {
              "top_left": { "lat": 第二个区域左上角纬度, "lon": 第二个区域左上角经度 },
              "bottom_right": { "lat": 第二个区域右下角纬度, "lon": 第二个区域右下角经度 }
            }
          }
        }
      ],
      "minimum_should_match": 1
    }
  },
  "aggs": {
    "all_users": {
      "terms": {
        "field": "username.keyword",
        "size": 10000
      },
      "aggs": {
        "count_area_a": {
          "filter": {
            "geo_bounding_box": {
              "location": {
                "top_left": { "lat": 第一个区域左上角纬度, "lon": 第一个区域左上角经度 },
                "bottom_right": { "lat": 第一个区域右下角纬度, "lon": 第一个区域右下角经度 }
              }
            }
          }
        },
        "count_area_b": {
          "filter": {
            "geo_bounding_box": {
              "location": {
                "top_left": { "lat": 第二个区域左上角纬度, "lon": 第二个区域左上角经度 },
                "bottom_right": { "lat": 第二个区域右下角纬度, "lon": 第二个区域右下角经度 }
              }
            }
          }
        },
        "exists_in_both": {
          "bucket_selector": {
            "buckets_path": {
              "a": "count_area_a._count",
              "b": "count_area_b._count"
            },
            "script": "params.a >= 1 && params.b >=1"
          }
        }
      }
    }
  }
}

查询结果的aggregations.all_users.buckets列表中就是同时在两个区域出现过的用户名。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 06:36:00