You need to enable JavaScript to run this app. 如何用Azure Application Insights捕获ASP.NET MVC的用户搜索查询
优惠活动
大模型
产品
解决方案
定价
更多

如何用Azure Application Insights捕获ASP.NET MVC的用户搜索查询

零代码提取搜索词的Kusto查询方案

你不需要修改任何应用代码,直接用App Insights内置的parse_urlquery函数就能从请求URL中拆分出搜索参数,对应查询如下:

明细查询(查看所有用户提交的搜索词列表)

requests
// 筛选所有包含搜索参数的请求,兼容你代码里两种传参方式
| where url has "search" or url has "searchen"
// 解析URL查询字符串为结构化动态对象
| extend query_params = parse_urlquery(url)
// 取第一个非空的搜索参数:页面跳转用search,AJAX请求用searchen
| extend search_term = coalesce(
    query_params["query"]["search"],
    query_params["query"]["searchen"],
    ""
)
// 过滤空搜索词
| where search_term != ""
// 输出需要的字段
| project 记录时间 = timestamp, 用户ID = user_Id, 搜索内容 = search_term, 原始URL = url
// 按时间倒序,最新搜索排在最前
| order by 记录时间 desc
  • 自动处理URL编码的搜索内容(比如中文、空格等特殊字符)
  • 如果你统一了搜索参数名(比如把AJAX的searchen改成search),删掉查询里关于searchen的两行即可
  • 原来的查询where url contains "search"会误匹配路径里带search的页面,这个查询通过解析查询参数彻底避免了这个问题

聚合查询(统计每个搜索词的出现次数)

如果要做搜索词排行,用这个查询:

requests
| where url has "search" or url has "searchen"
| extend query_params = parse_urlquery(url)
| extend search_term = coalesce(
    query_params["query"]["search"],
    query_params["query"]["searchen"],
    ""
)
| where search_term != ""
| summarize 搜索次数 = count() by 搜索内容 = search_term
| order by 搜索次数 desc
把查询固定到Application Insights仪表盘
  1. 在Log查询窗口跑通上面的语句,确认输出符合预期
  2. 点击查询窗口顶部的固定到仪表盘按钮
  3. 选择要存放的仪表盘,磁贴类型选「表格」,就能直接在仪表盘看到所有搜索词的明细或者排行
可选的稳定化优化(无需复杂改动)

目前的方案依赖URL参数提取,如果后续你把搜索改成POST请求、或者修改参数名,查询会失效。如果想要更稳定的采集,可以在接收搜索参数的Controller Action里加2行自定义遥测代码:

' VB.NET MVC 写法
Dim telemetry As New Microsoft.ApplicationInsights.TelemetryClient()
telemetry.TrackEvent("用户搜索", New Dictionary(Of String, String) From {{"搜索内容", 你的搜索变量名}})

加完之后直接查询customEvents表就能拿到结构化的搜索数据,不需要再解析URL。这个属于可选优化,零代码方案已经能满足你当前的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.01 02:15:04