Use the Cloud Search Service Application On-Premises

Use the Cloud Search Service Application On-Premises

One of the new features included in SharePoint Server 2016, and also available with SharePoint 2013 as long as you have the required PU, is the Cloud Hybrid Search. The Cloud Hybrid Search has many advantages, especially for end users and if you don’t know what it’s about, check out my overview I did on CMSWire.

The Instructions on how to setup the Cloud Hybrid Search, enabled by the Cloud Search Service Applications do show you how to configure everything so you can search both On-Premises content as well as SharePoint Online content from the SharePoint Online Admin Center. What they don’t include is how to enable your On-Premises Search Center to also see those results. Since the index is fully in the cloud, as soon as you enable the Cloud Search Service Application, your On-Premises search boxes and Search Center will start returning absolutely nothing.

Cloud Search Service Application On-Premises

That is because, the default Result Source of your Search Service Application is looking for items in the On-Premises Search Index, which is empty since everything is shipped to Office 365. What we will need to do in order to get this fixed, is configure a result source that uses Hybrid Federated Outbound Search to Office 365, and get the results from that Search Index. Luckily, if you didn’t have Server-to-Server trust already setup before configuring the Cloud Hybrid Search, the On-Boarding process has already configured that for you, so you don’t have anything else to do except the steps in this blog. So navigate your Central Administration, and then to the administration page of your Cloud Search Service Application.

Cloud Search Service Application On-Premises

From there, go to Result Sources, and create a new Result Source. Enter a good name and description, so everyone else in your organization knows what this Result Source does, and in the Protocol, select “Remote SharePoint”. In the Remote Service URL, enter your main SharePoint Online site collection which is always https://companyname.sharepoint.com. You can easily find this from your SharePoint Online Administration Center.

Cloud Search Service Application On-Premises

In the Type, select SharePoint Search Results, and in the Query Transform, you can customize the Query according to your business needs. In the Credentials Information section, select “Default Authentication”

Cloud Search Service Application On-Premises

Click Save, and return to the Result Sources page. From the Result Sources Page, select the dropdown near the Result Source you just created and then select “Set as Default”

Cloud Search Service Application On-Premises

Simply go do a search from your Document Library Search Boxes or from the Search Center, and you will start seeing Search Results again!

Cloud Search Service Application On-Premises

Cloud Search Service Application On-Premises

If you want to learn more about SharePoint Hybrid and the Cloud Hybrid Search, check out my Pluralsight course on Implementing a Hybrid SharePoint 2013/2016 Infrastructure by clicking the small banner below!

4.65/5 (17)

Please rate this

 
Comments

Hi Vlad,

In this case, as you said the index is in O365 and lets suppose if some users don’t have license assigned to them in Office 365. Whether they will be able to receive the search results from online index?

If they don’t have an Office 365 license, they will not be able to do any searches, since they won’t be able to authenticate to O365 to query the index.

Hi Vlad,

I’ve installed SP 2016 and the June 2016 CU, but I don’t see the Cloud search service application. Is it part of any different installation or CU?

Thanks

Hello Raj,

You can either do it by PowerShell, or when you create a new normal SSA you will see a checkbox appear” this is a cloud SSA”. I reccomend you follow this Pluralsight course to properly implement SharePoint hybrid! https://www.pluralsight.com/courses/hybrid-sharepoint-2013-2016-infrastructure

Hi Vlad,
I’ve been following your Hybrid course in Pluralsight and have found it to be extremely useful. The one area where I’ve not had any success has been in displaying cloud results within the on-premises search centre. I have added the additional result source within the CSSA and have checked connectivity with the “Test Source” option from the context menu and all is good and have set it to default. I also get the combined result set in my search centre in the SharePoint online. The only thing I have noticed is that the Cloud Search Service Application proxy is not a member of the default group with the service application associations, is this expected? Any thoughts or suggestions as to where I’ve gone wrong be gratefully received.

Great job on the course!

Thanks

Hello Andy, you need to put it part of the default, or if not, make sure that Web APplications use it in “Service Connections” if you don’t want to use it in all of them!

I’ve tried this and I’m getting a RemoteAPI permission error. I’ve deleted and recreated it a few times with the same error:

0¾Microsoft.SharePoint.Client.ServerException: Query execution is only allowed with IgnoreSafeQueryPropertiesTemplateUrl=true when the user has the UseRemoteAPIs permission. at Microsoft.SharePoint.Client.ClientRequest.ProcessResponseStream(Stream responseStream) at Microsoft.SharePoint.Client.ClientRequest.ProcessResponse() at Microsoft.Office.Server.Search.RemoteSharepoint.RemoteSharepointEvaluator.RemoteSharepointProducer.RetrieveDataFromRemoteServer(Object unused) at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at Microsoft.Office.Server.Search.RemoteSharepoint.RemoteSharepointEvaluator.RemoteSharepointProducer.ProcessRecordCore(IRecord record)

Any thoughts?

Leave a Reply