Docs
Пошук документації...⌘K

Синтаксис фільтрів

Деякі ендпоїнти API приймають параметр where, який застосовує фільтр до набору результатів.

У наступних розділах наведено приклади використання фільтрів і повний довідник із синтаксису.

Приклади

info

Щоб побачити більше прикладів із реальних сценаріїв, спробуйте застосувати кілька фільтрів до звіту на ahrefs.com у нашому візуальному інтерфейсі, а потім натисніть кнопку API {} — так ви побачите параметр where у згенерованому запиті API v3.

Поле "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. Воно має відповідати типу поля (або типу модифікатора поля, якщо він заданий).

Дозволені шаблони у виразах фільтрації regex відрізняються залежно від інструмента.

  • 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> }