Статьи

Solr 5 — API запросов JSON, часть 1

Solr 5 внес много изменений в мир API и функций вокруг Solr. JSON API и Facets были перенесены из проекта HeliosSearch и позволили пользователям отправлять запросы с использованием JSON, что более удобно для пользователя по сравнению с длинными запросами, созданными как URI. В этой статье мы познакомим вас с миром API запросов JSON в Solr.

Выполнение запроса

Я уверен, что вы знакомы с тем, как выполнять запросы к Solr стандартным способом, верно? Таким образом, чтобы получить документы , которые соответствуют SOLR термин в _text_ поле мы бы просто запустить команду:

curl -XGET 'localhost:8983/solr/gettingstarted/select?q=_text_:solr&indent=true'

Просто для записи, я использую пример без схемы, предоставленный Solr, и я проиндексировал данные из каталога docs .

Мы можем сделать то же самое, используя JSON API Solr. Например, структурированный запрос JSON, который будет возвращать точно такие же результаты, как показанный выше, будет выглядеть следующим образом:

curl -XGET 'localhost:8983/solr/gettingstarted/query' -d '{
 "query":"_text_:solr"
}'

Как видите, мы просто указываем запрос, используя объект JSON и свойство запроса в нем, и отправляем его как тело запроса в обработчик / query . Мы также могли бы отправить запрос в обработчик / select , но в / query по умолчанию используется ответ JSON, поэтому он кажется более подходящим для запросов JSON.

Мы также можем использовать стандартные имена параметров и передавать их в теле запроса, вот так:

curl -XGET 'localhost:8983/solr/gettingstarted/query' -d 'q=_text_:solr'

Итак, на этот раз у нас не было структуры JSON в теле запроса, мы просто передали туда параметры и разделили их символом & , как при отправке запроса с использованием запроса URI.

Paging

Конечно, мы также можем просматривать результаты при использовании JSON API. Мы делаем это с помощью параметров limit и и offset . Параметр limit указывает максимальное количество возвращаемых документов, а параметр смещения отвечает за указание Solr, из какого документа должны быть возвращены результаты. Например, чтобы получить 20 документов, начиная с 11-го, мы выполнили бы следующий запрос:

curl -XGET 'localhost:8983/solr/gettingstarted/query' -d '{
 "query":"_text_:solr",
 "limit":20,
 "offset":10
}'

Сортировка

Следующим является возможность сортировки результатов, и мы можем сделать это, используя Solr JSON API. Чтобы отсортировать наши результаты на основе поля id (в порядке убывания), мы выполнили бы следующий запрос:

curl -XGET 'localhost:8983/solr/gettingstarted/query' -d '{
 "query":"_text_:solr",
 "sort":"id desc"
}'

Это очень похоже на то, к чему мы привыкли при использовании стандартных запросов URI-запросов, но мы используем свойство sort .

фильтрация

Наконец, у нас есть фильтрация. Мы можем отфильтровать наши данные, используя свойство фильтра . Например, чтобы сузить наши данные до тех, которые имеют значение text / html в поле content_type, мы выполнили бы следующий запрос:

curl -XGET 'localhost:8983/solr/gettingstarted/query' -d '{
 "query":"_text_:solr",
 "filter":"content_type:text/html"
}'

Что дальше?

Как видите, JSON API Solr очень прост в использовании и позволяет нам использовать более структурированные запросы при общении с Solr. В следующей записи мы обсудим API JSON Facets, как его использовать и каковы другие отличия, когда речь идет о JSON Facets и традиционной реализации, потому что выполнение запроса — не единственное отличие при сравнении этих двух.