Troubleshoot Publishing to Your Live Coveo for Sitecore Index
There’s a lot of moving parts that go into updating indexed items when publishing in Coveo for Sitecore.
Things were going great, or worked perfectly in the test environment, but all of a sudden, when items are published, the search results don’t update. Or somebody said “my changes are taking a long time to show up, how come?”
It’s not obvious which one might be missing, either. Maybe you deployed to a new environment, or migrated from one to another. Or you upgraded Coveo, or Sitecore itself. It could have even been routine development work if you were particularly unlucky. Why would any of that break indexing updates? Unfortunately, there’s a few things that could have gone wrong.
Here’s the list of what we’re going to check:
- Coveo diagnostics
- Sitecore and Coveo configuration
- Publish Events
- SQL Data
Coveo for Sitecore Diagnostics
The first and easiest thing to check. Maybe a Coveo system item got unpublished, or one of the config files didn’t get deployed to a new environment. Coveo’s diagnostics will tell you all of that.
Make sure all these lights are green and it says “these versions are compatible”.
A little further down it has your cloud organization name and your document limits. Make sure these are filled in, that you are under the limits, and that it is the right organization, just in case.
Sitecore and Coveo for Sitecore Configuration
Alright, the diagnostics have told us that all the configuration files are there and the other files are good, too. What could be wrong with the configuration? This mostly comes down to the wrong data in the files.
First off, maybe it is actually working and you’re just missing the fields. It’s worth checking in the Coveo platform to see if your item actually has a recent index date. The date was a few moments ago when you published it? It probably is the fields.
Sitecore and Coveo recently switched from indexing all fields to indexing just a few by default. Fortunately, Coveo for Sitecore 6 has a fancy control panel where we can check whether the fields we want are being indexed.
We can see in this image that only 2 of the fields from our article page are being indexed. That likely means that the fields we want are not being indexed. You can just expand the arrow on the right, check off the fields you need, and republish your item.
That worked? Great. It didn’t work, or your item doesn’t have a recent index date? Then we have to dig further. For purposes of the rest of this article, we’re going to assume that the Coveo Master Index is updating properly, and that you do get items in the index when doing and rebuild and concentrate only on the “it doesn’t update when publishing” case.
First off, maybe a patch file didn’t get deployed. Or maybe the index was overridden in a patch file that wasn’t meant for this instance. Off to /sitecore/admin/showconfig.aspx.
Make sure the web index is present:
<index id="Coveo_web_index" type="Coveo.SearchProvider.ProviderIndex, Coveo.SearchProvider" patch:source="Coveo.SearchProvider.Custom.config">
Or, if you’ve scaled out to use a “Coveo_pub_index”, or “Coveo_live_index”, make sure that entry is present too. Sometimes these get missed during deploys or environment setups if they are only in one instance.
Next, make sure the item is present in the path in the crawler, and that the crawler is looking at the right database.
<crawler name="ContentCrawler" type="Sitecore.ContentSearch.SitecoreItemCrawler, Sitecore.ContentSearch" patch:source="Coveo.SearchProvider.Custom.config">
<database>web</database>
<root>/sitecore/content/Mysite</root>
<stopOnError>false</stopOnError>
</crawler>
What if you’ve got a whole folder of articles that lives in Sitecore/content/common? That won’t get caught by this crawler. This is especially a concern with site reorganization or adding an entire new kind of content. Is the database entry in this “pub”, if you are using the “pub” index Coveo recommends for a scaled site? All too easy to leave it set at “web”.
<strategies hint="list:AddStrategy">
<strategy ref="contentSearch/indexConfigurations/indexUpdateStrategies/coveoOnPublishEndAsync"/>
</strategies>
Is the coveoOnPublishEndAsync entry present? And pointing to the correct strategy? If you’ve made your own custom strategy, make sure that’s the end result here after all the patch files, too.
Publish Events in Coveo for Sitecore
Alright. You’ve verified your fields, that content does show up in the indexes, rebuilds work fine, what’s left? First off, are publish events getting fired? The simplest way to verify this is to make sure that your sitecore_web_index sees publish updates, since the Coveo_web_index shares the event triggers with it.
No good? Make sure this entry is present in your showconfig, and that it has eventqueues for every database you’ve got set up:
<eventQueueProvider defaultEventQueue="core">
<eventQueue name="web" type="Sitecore.Data.Eventing.SqlServerEventQueue, Sitecore.Kernel">
<param ref="dataApis/dataApi[@name='SqlServer']" param1="$(name)"/>
<param ref="PropertyStoreProvider/store[@name='$(name)']"/>
</eventQueue>
<eventQueue name="master" type="Sitecore.Data.Eventing.SqlServerEventQueue, Sitecore.Kernel">
<param ref="dataApis/dataApi[@name='SqlServer']" param1="$(name)"/>
<param hint="" ref="PropertyStoreProvider/store[@name='$(name)']"/>
</eventQueue>
<eventQueue name="core" type="Sitecore.Data.Eventing.SqlServerEventQueue, Sitecore.Kernel">
<param ref="dataApis/dataApi[@name='SqlServer']" param1="$(name)"/>
<param ref="PropertyStoreProvider/store[@name='$(name)']"/>
</eventQueue>
</eventQueueProvider>
Also check the eventQueueMonitor/processingInterval setting, make sure it hasn’t been set to three days or some other large value.
Coveo for Sitecore SQL Data
Okay, publish events are definitely firing in general. But the Coveo index still isn’t seeing the updates. What’s left? There’s really only one thing left to check. In your Core database, run this script:
SELECT * FROM [Properties] WHERE [Key] LIKE '%_LAST_UPDATED_TIMESTAMP%' AND [Key] LIKE '%COVEO%'
Odds are, you’ll have a whole lot of these, especially if you’ve migrated databases. Make sure there’s one that matches up to your index name and machine name.
There isn’t one that matches, but there’s a bunch for different machine names? Or there’s several for the same machine name and index name? That’s the issue. Delete all the entries, and Sitecore will regenerate the appropriate values. You’ll probably need to restart the web app (if you are on Azure) or recycle the app pool locally.
DELETE FROM [Properties] WHERE [Key] LIKE '%_LAST_UPDATED_TIMESTAMP%' AND [Key] LIKE '%COVEO%'
The End
That’s all! Everything should be caught when publishing and your users will be happy.