Поиск в DOAJ API: синтаксис запросов и поля
Обновлено:
Поиск DOAJ API работает на Elasticsearch и принимает запросы в синтаксисе Lucene. Документация DOAJ описывает его кратко, а часть особенностей приходится выяснять опытом. Здесь собрано всё нужное для запросов к статьям и журналам, с примерами, проверенными на живом API.
Адреса и параметры
GET https://doaj.org/api/v4/search/articles/{запрос}?page=1&pageSize=100&sort=…
GET https://doaj.org/api/v4/search/journals/{запрос}?page=1&pageSize=100&sort=…
- Запрос передаётся в пути и кодируется как часть URL.
pageSize— до 100 записей на страницу, по умолчанию 10.- Доступны только первые 1000 результатов запроса — как это обойти, описано в инструкции Как выгрузить все статьи журнала из DOAJ.
- Для поиска ключ API не нужен. Ограничение — 2 запроса в секунду.
Основы синтаксиса
| Что нужно | Пример |
|---|---|
| Поиск по всем полям | metamaterial |
| Поиск в конкретном поле | bibjson.title:"phase demodulator" |
| Логика и скобки | bibjson.keywords:"open access" OR bibjson.keywords:"open science" |
| Исключение | issn:1810-3189 AND NOT _exists_:index.doi |
| Диапазон | bibjson.year:[2022 TO 2024] |
| Поле заполнено / не заполнено | _exists_:bibjson.abstract, NOT _exists_:bibjson.keywords |
| Точное совпадение всего значения | bibjson.journal.title.exact:"Journal of Physics" |
| Все записи | * |
Поля указываются через точку, как в JSON записи: bibjson.author.name, bibjson.journal.volume. Без .exact поиск идёт по словам: bibjson.journal.title:"Journal of Science" найдёт и «Journal of Science and Technology».
Сокращения
Для частых полей DOAJ принимает короткие имена — но только для поиска по значению, а .exact и _exists_ с ними не работают.
| Статьи | Журналы |
|---|---|
title: abstract: doi: issn: publisher: | title: issn: publisher: license: username: |
DOI можно искать как есть — DOAJ сам экранирует слеш, — но надёжнее брать его в кавычки: doi:"10.18469/1810-3189.2022.25.4.122-128".
Сортировка
sort=created_date:desc — сначала новые в DOAJ
sort=last_updated:desc — недавно изменённые
sort=title:asc — по названию
sort=bibjson.year.exact:desc — по году публикации
sort=issn:asc — журналы по ISSN
По году нужно сортировать именно через bibjson.year.exact: sort=bibjson.year:desc возвращает ошибку.
Что запрещено
Чтобы запросы не перегружали сервер, DOAJ отклоняет:
- шаблоны
*и?внутри слов (doi:10.18469*— ошибка «disallowed Lucene features»); - нечёткий поиск
~и поиск по близости слов; - регулярные выражения
/…/; - открытые диапазоны:
created_date:[2026-01-01 TO *]— ошибка; задавайте обе границы.
Неочевидные ловушки
| Ловушка | Как правильно |
|---|---|
_exists_:doi всегда ложно — поля doi нет, это сокращение | _exists_:index.doi или bibjson.identifier.type:doi |
Страницы при загрузке лежат в bibjson.journal.start_page, а поиск по этому полю ничего не находит | Искать по bibjson.start_page и bibjson.end_page |
index.country:RU и index.language:RU ничего не находят | В index.* — английские названия: index.country:"Russian Federation", index.language:Russian. Коды — в bibjson.journal.country, bibjson.language |
| Логические поля и флаги в разном формате | bibjson.apc.has_apc:false, но index.has_apc:No |
| Название журнала не находится по-английски | Основное название может быть на национальном языке; английское — в bibjson.alternative_title (у журналов) |
publisher: и license: для журналов часто ничего не находят | bibjson.publisher.name:… и index.license:"CC BY" |
_exists_:bibjson.author.orcid_id истинно, если ORCID есть хотя бы у одного автора | «Есть ли автор без ORCID» запросом не проверить — нужна выгрузка и проверка записей |
Полезные запросы
issn:1234-5678 AND bibjson.year:2024
issn:1234-5678 AND NOT _exists_:index.doi
bibjson.abstract:metamaterial AND bibjson.year:[2022 TO 2024]
bibjson.author.orcid_id:"https://orcid.org/0000-0002-1825-0097"
bibjson.link.url:"journal.example.org"
index.country:"Russian Federation" AND index.subject:Physics (журналы)
bibjson.apc.has_apc:false AND index.language:Russian (журналы)
В конструкторе запросов есть все 54 поля статей и 83 поля журналов с описаниями и примерами — щелчок вставляет условие в запрос.
Открыть пример запроса