筛选语法
某些 API 端点接受 where 参数,用于对结果集进行筛选。
以下各节提供了一些筛选用法示例以及完整的语法参考。
例子
info
如需更多真实场景示例,可在 ahrefs.com 上使用我们的可视化界面对某份报告应用一些筛选条件,然后点击 API {} 按钮,查看生成的 API v3 查询中的 where 参数。
字段“foo”等于 3:
{ "field": "foo", "is": ["eq", 3] }
对于 object 类型的字段,请使用点号表示法引用嵌套字段。 字段“bar”(嵌套在字段“foo”下)等于 3:
{ "field": "foo.bar", "is": ["eq", 3] }
整数型字段“foo”等于 3,且整数型字段“bar”小于 10:
{
"and": [
{ "field": "foo", "is": ["eq", 3] },
{ "field": "bar", "is": ["lt", 10] }
]
}
要么字符串字段“foo”的值转为大写后等于“AHREFS”,要么数组字段“bar”中的所有字符串元素都以前缀“Ahrefs”开头并以后缀“seo”结尾。
{
"or": [
{
"field": "foo",
"modifier": "uppercase",
"is": ["eq", "AHREFS"]
},
{
"field": "bar",
"list_is": {
"and": [
["prefix", "Ahrefs"],
["suffix", "seo"],
]
}
}
]
}
语言参考
筛选语法由以下语法描述,以 BNF 风格的记号表示。
用尖括号 \< 和 > 括起来的术语表示一个符号。 符号后跟 + 表示包含该符号的非空数组。 对象字段前的 ? 表示该字段为可选。
两个终结符定义如下:
\<field_alias>筛选字段别名。 有效别名列表请参阅相应端点的文档。 请注意,select和where参数可接受的别名可能不同。\<value>一个 JSON 值。 它应与字段的类型(如果存在修饰符,则与修饰符所对应的类型)相匹配。
不同工具在正则表达式过滤器中允许使用的模式有所不同。
- Keywords Explorer:仅支持将
*作为通配符运算符。 - Site Explorer:RE2 语法。
\<bool_filter> ::= { "and" : \<bool_filter>+ }
| { "or" : \<bool_filter>+ }
| { "not" : \<bool_filter> }
| \<expr>
\<expr> ::= {
"field" : \<field_alias>,
? "is": \<condition>,
? "list_is": \<list_condition>
}
\<condition> ::= [ "eq", \<value> ]
| [ "neq", \<value> ]
| [ "gt", \<value> ]
| [ "gte", \<value> ]
| [ "lt", \<value> ]
| [ "lte", \<value> ]
| [ "substring", \<value> ]
| [ "isubstring", \<value> ]
| [ "phrase_match", \<value> ]
| [ "iphrase_match", \<value> ]
| [ "prefix", \<value> ]
| [ "suffix", \<value> ]
| [ "regex", \<value> ]
| "empty"
| "is_null"
\<condition_bool_filter> ::= { "and" : \<condition_bool_filter>+ }
| { "or" : \<condition_bool_filter>+ }
| { "not" : \<condition_bool_filter> }
| \<condition>
\<list_condition> ::= { "any" : \<condition_bool_filter> }
| { "all" : \<condition_bool_filter> }