Change SharePoint 2013 Search Topology
One of the things that changes in SharePoint 2013 is the fact that you can no longer configure the Search Topology with Central Administration. Instead you have to user PowerShell commands. Unfortunately, the TechNet articles are not completely clear about all the details of how to use the commands in practical situations.
Therefore I decided to explain how to use them in one typical scenario. In a 3-tier architecture of Web Front End, Application Server and backend SQL Server, I tend to run Central Administration from the web front end, which I’ve named “WFE”, rather than from the application server.
When you install the Search Service Application, all the components are installed on he Web Front End. To distribute the processing load, in 3-tier architecture its best to keep the Query component on the Web Front End and move all the components to the Application Server. Below are step-by-step instructions to do this. Note that you should only use this method if you haven’t done a crawl yet and your search index is empty. If you want to move components around after you’ve got items in your index, you’ll have to clone the search topology first. In this case see Manage Search Components in SharePoint Search 2013.
Start by getting a reference to the WFE Server that is presently hosting all search components:
$wfeserv = Get-SPEnterpriseSearchServiceInstance -Identity "www"
Start an instance of the search service on the application server (which I have named “AppServ”:
$appserv = Get-SPEnterpriseSearchServiceInstance -Identity "appserv" Start-SPEnterpriseSearchServiceInstance -Identity $appserv
Give this command until it reports that the new server instance is “online” (if its not online yet it will say “provisioning”).
Get-SPEnterpriseSearchServiceInstance -Identity $appserv
Then create a new search topology and get a reference to it.
$ssa = Get-SPEnterpriseSearchServiceApplication $newTopology = NewSPEnterpriseSearchTopology -SearchApplication $ssa
In SharePoint Server 2013, search has six componenets:
- Admin
- Crawl
- Content Processing
- Analytics Processing
- Query Processing
- Index
Assign 5 of the components to the application server and assign the query component to the web front end:
New-SPEnterpriseSearchAdminComponent -SearchTopology $newTopology -SearchServiceInstance $appserv New-SPEnterpriseSearchCrawlComponent -SearchTopology $newTopology -SearchServiceInstance $appserv New-SPEnterpriseSearchContentProcessingComponent -SearchTopology $newTopology -SearchServiceInstance $appserv New-SPEnterpriseSearchAnalyticsProcessingComponent -SearchTopology $newTopology -SearchServiceInstance $appserv New-SPEnterpriseSearchQueryProcessingComponent -SearchTopology $newTopology -SearchServiceInstance $wfeserv New-SPEnterpriseSearchIndexComponent -SearchTopology $newTopology -SearchServiceInstance $appserv
Now you need to activate the search topology:
Set-SPEnterpriseSearchTopology -Identity $newTopology
Now you have one active and one inactive topology which you can see with this new command:
Get-SPEnterpriseSearchTopology -SearchApplication $ssa
To get full details of the components in the active topology, you can use the Search Status command:
Get-SPEnterpriseSearchStatus -SearchApplication $ssa -Text
If everything has worked out OK, then you should see the application server assigned to the components in Central Administration in the search service application: