Hello, is it me you’re looking for?
Sitecore has implemented Azure Search and Solr search providers for 9+ XP installs. They both have their pros and cons. But the best way to evaluate and compare them is by getting your hands dirty and breaking some things on your local machine.
Azure Search is Microsoft’s Paas offering that is supported by Sitecore and is the Out Of The Box search provider for Sitecore 9+ destined for PaaS environments. The Sitecore Quickstart ARM templates for all Cloud XP installs will include the appropriate service infrastructure and configs.
Solr is the recommended option for XP on prem deployments. It is battle tested and fully featured, but has a difficult time fitting in with the Azure Paas offerings many organisations are investing in.
When it comes to your dev box, you’ll likely have installed an on prem package which uses Solr as the default search provider. Using Azure search for your dev instance full time may be cost prohibitive as you need a Standard instance at minimum. But as an inquisitive dev, it’s easy to have a play with it locally to create and consume custom indexes or just to get a feel for the differences. Note there are some limitations with using the Azure Search provider as outlined in the Sitecore Azure Search documentation. There are workarounds for most of these, so really comes down to your implementation and being aware of these limitations when you’ve got the headphones on and in “code mode”.
Azure Search on your dev machine
If you’re game and have a few Azure credits up your sleeve (remember you get a fair whack with your MSDN subscription), then you can get up and running quickly on any 9+ install.
NB: You’ll need a working Sitecore 9+ install (that is using Solr) up and running. If you don’t already have one you can install via SIFLess, for fast installs that won’t take all night long. If you have an existing customised install there are a number of considerations to keep in mind, which I’ll address in a follow up post.
Create the Azure Search Service
You’ll need to create a search service in the Azure portal.
- New Service > Azure Search Service
- Give it a URL, it just needs to be unique
- Select the appropriate subscription and resource group for your account
- Pick the location closest to you to minimise the latency on queries (NB: Azure search is not available in all regions and prices/offerings do vary!)
- Selects a standard pricing tier (you’ll require 15 indexes minimum)
- Create it and wait a short while for the service to provision.
- Make a note of the search service URL (on the Overview blade) and API key (on the Keys blade) for the following steps.
Modify the configs
The Sitecore 9+ configs allow for an easy switch between providers, assuming you haven’t modified the OOTB configs:
Add a new connection string called “cloud.search”
Using the Search URL and API key from the Azure portal, add a connection string to your ConnectionStrings.config like the below.
<ConnectionStrings> ... <add name="cloud.search" connectionString="serviceUrl=https://YOURSEARCHURL;apiVersion=2015-02-28-preview;apiKey=YOURAPIKEY"/> ... </ConnectionStrings>
Change the app search definition app setting in your web.config
Sitecore 9 allows for roles based configuration so, switching providers is just a matter of changing the search definition in app settings.
<AppSettings> ... <add key="search:define" value="Azure" /> ... </AppSettings>
Rebuild the indexes
Your instance should now be “talking” to your Azure search service, but none of the appropriate data will be populated in the indexes. Rebuild all your indexes by:
- Logging into your sitecore instance
- Go to the Control Panel > Indexing Manager
- Rebuild Indexes
That’s about it. You’re dancing on the ceiling with searches running in the cloud. Do some tests. Have a play, maybe even implement a custom index for your site search. Just remember to delete your Azure search instance in the portal once you’re done and save those valuable credits!