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 и традиционной реализации, потому что выполнение запроса — не единственное отличие при сравнении этих двух.