如何获取MarkLogic中search:suggest HTTP查询的请求指标
解决方案
默认return-metrics参数仅对/_search端点生效,独立的/_suggest端点原生不支持该配置,可通过以下几种方式获取搜索建议请求的相关指标:
- 全局集群指标采集
调用节点统计接口即可获取全集群所有suggest请求的聚合统计数据,包含总请求量、总处理耗时、平均处理耗时、排队时长统计等维度,适合做整体服务监控、容量评估场景使用:GET /_nodes/stats/indices/search
返回结果中indices.search.suggest字段下即为对应统计值。 - 单请求指标获取
将suggest请求嵌入普通_search请求的请求体中提交,无需调用独立suggest端点,此时return-metrics参数即可正常生效,返回单次请求的耗时、匹配数量等细化指标。ES7及以上版本已废弃独立/_suggest端点,该用法也是官方推荐的标准写法,请求示例如下:
POST /your_index/_search { "options": { "return-metrics": true }, "suggest": { "your_suggest_name": { "prefix": "搜索关键词", "completion": { "field": "suggest_field" } } } }
- 日志采集
按需开启search慢日志的suggest采集阈值,所有符合阈值条件的suggest请求都会被持久化到日志文件中,记录内容包含请求完整参数、处理耗时、返回字节数、处理节点等信息,适合排查慢请求、做细粒度的请求分析使用,动态配置示例如下:
PUT /_cluster/settings { "transient": { "search.slowlog.threshold.suggest.info": "50ms", "search.slowlog.threshold.suggest.debug": "10ms" } }
- 应用层埋点
如果需要自定义统计维度,可以在调用suggest接口的业务服务层增加埋点逻辑,记录请求发起时间、返回时间、请求参数、返回状态等信息,灵活适配定制化的统计需求。
内容的提问来源于stack exchange,提问作者Jakub
相关产品推荐
相关产品推荐

