Hide menu Last updated: Sep 21 2015

Installing Search service

The Search service is deployed through NuGet package EPiServer.Search. You can install the package on an existing site (the service then runs inside the same application as the site), or you can install the package on an empty web project. The NuGet package updates the configuration file with default settings for the service.

Note: Installing EPiServer.Search package requires NuGet Manager version 2.6 or later.

Client configuration

Configure the search client on the website to use the service. Set the attribute baseUri attribute to the endpoint for the service. The following example shows a default configuration:

XML
<episerver.search active="true">
  <namedIndexingServices defaultService="serviceName"> 
     <services> 
       <add name="serviceName" baseUri="http://sitehost/IndexingService/IndexingService.svc" accessKey="local" /> 
     </services>
  </namedIndexingServices> 
  <searchResultFilter defaultInclude="true">
     <providers /> 
  </searchResultFilter> 
</episerver.search>

Service configuration

The default configuration allows local connections; that is, requests originated from the same server are allowed. If you deploy the Search service to another machine than the site, then the specify the ipAddress and ip6Address attributes  as follows:

XML
<episerver.search.indexingservice> 
    <clients> 
        <add name="local" description="local" allowLocal="true" ipAddress="<ipaddress here>" readonly="false"/> 
    </clients> 
    <namedIndexes defaultIndex="default"> 
        <indexes> 
            <add name="default" directoryPath="[appDataPath]\Index" readonly="false"/> 
        </indexes> 
    </namedIndexes> 
</episerver.search.indexingservice>

You also can configure the service to accept requests from all IP addresses and use an access key instead; useful in cloud environments where IP addresses are not known. In that case, the client configuration on the site should specify an access key and a client configuration  with same name as the accessKey should exist on the service configuration, as shown in the following example:

Client configuration:

<episerver.search active="true">
    <namedIndexingServices defaultService="serviceName">
        <services>
            <add name="serviceName" baseUri="http://<yoursearchsite>/IndexingService/IndexingService.svc" 
        accessKey="C7184E3ED7134895B3E95AB3AB4F4AE5" />
        </services>
    </namedIndexingServices>
    <searchResultFilter defaultInclude="true">
        <providers />
    </searchResultFilter>
</episerver.search> 

Server configuration:

<episerver.search.indexingservice>
    <clients>
      <add name="C7184E3ED7134895B3E95AB3AB4F4AE5" description="local" allowLocal="false" ipAddress="0.0.0.0/0" 
            ip6Address="::/0" readonly="false" />
    </clients>
    <namedIndexes defaultIndex="default">
      <indexes>
        <add name="default" directoryPath="[appDataPath]\Index" readonly="false" />
      </indexes>
    </namedIndexes>
  </episerver.search.indexingservice>

        

Deployment

When you deploy the site to production, update the baseUri to the production search service. When you deploy the Search service to production, you might need to update the allowed IP addresses if that configuration is used.

IIS hosting

To host the service in IIS you need to enable the Windows feature HTTP Activation (on Windows server: typically "Roles and Features > .NET Framework 4/4.5 Featues > WCF Service").

Logging

The search indexing service uses the Logging API. Make sure there is a provider such as EPiServer.Logging.Log4Net installed to enable logging.

Related topics

Comments