Kusto中has操作符在右侧非单个术语时的性能表现如何?
Kusto
has 操作符多术语/带特殊字符场景的性能说明 问题背景
Kusto的has操作符文档提到,使用术语搜索时可借助术语索引提升查询性能,但当搜索术语长度小于3个字符时,会回退为全列扫描,无法利用索引。
在监控查询中遇到以下两种has用法:
Message has "Heart Beat" Message has "ends:"
功能上能正确匹配完整字符串,但不确定这两种场景下是否仍能利用术语索引,还是会回退到列扫描。
性能分析
多术语场景(
Message has "Heart Beat")has操作符对带空格的字符串会自动拆分为多个独立术语(这里是Heart和Beat),并执行逻辑AND匹配。每个术语长度都大于3,因此会分别调用术语索引进行查找,再取结果交集,完全能享受索引带来的性能提升,不会回退列扫描。带非字母数字字符场景(
Message has "ends:")
Kusto的术语分词规则会将非字母数字字符(比如这里的冒号:)视为术语分隔符,实际搜索的核心术语是ends。由于ends长度大于3,会正常使用术语索引,不会触发全列扫描。
补充:如果是类似
has "ab:"这种场景,拆分后的核心术语ab长度不足3,才会回退为列扫描。
内容的提问来源于stack exchange,提问作者greatvovan
相关产品推荐
相关产品推荐

