When creating a new search service, either a cloud search service or a normal one, it is best practice to break out the components across multiple servers in the SharePoint farm. This is easily accomplished through PowerShell.
The script below is for a three server farm (one application server and two web front end servers) and will break out the services as follows:
APP01 |
Crawl Component Content Processing Component Analytics Processing Component |
WFE01 |
Administration Component Query Component Index Component |
WFE02 |
Administration Component Query Component Index Component |
Before running the script, replace the Environment Details section with the relevant information and ensure that the search service instance is started on all the servers by using the Start-SPEnterpriseSearchServiceInstance command. If you run a Get-SPEnterpriseSearchServiceInstance for each server, they should return as Online.
Add-PSSnapin Microsoft.SharePoint.PowerShell # ***** Environment Details ***** $SSAName = "Search Service Application Name" $APP01 = "Application Server" $WFE01 = "Web Front End Server 1" $WFE02 = "Web Front End Server 2" # Get Service Instance on all servers $col = $host.ui.RawUI.ForegroundColor $host.ui.RawUI.ForegroundColor = "Blue" Write-Output "Getting Search Service Instance" $host.ui.RawUI.ForegroundColor = "Green" $SSI1 = Get-SPEnterpriseSearchServiceInstance -Identity $APP01 $host.ui.RawUI.ForegroundColor = "Blue" Write-Output "... $APP01" $host.ui.RawUI.ForegroundColor = "DarkGreen" $SSI2 = Get-SPEnterpriseSearchServiceInstance -Identity $WFE01 $host.ui.RawUI.ForegroundColor = "Blue" Write-Output "... $WFE01" $host.ui.RawUI.ForegroundColor = "DarkGreen" $SSI3 = Get-SPEnterpriseSearchServiceInstance -Identity $WFE02 $host.ui.RawUI.ForegroundColor = "Blue" Write-Output "... $WFE02" Write-Output " " Write-Output "Complete." Write-Output " " # Retrieve Search Service Instance and create topology Write-Output "Creating Topology" $SSA = Get-SPEnterpriseSearchServiceApplication -Identity $SSAName $Topology = New-SPEnterpriseSearchTopology -SearchApplication $ssa Write-Output "...Crawl Component on $APP01" $host.ui.RawUI.ForegroundColor = "DarkGreen" New-SPEnterpriseSearchCrawlComponent -SearchTopology $Topology -SearchServiceInstance $SSI1 $host.ui.RawUI.ForegroundColor = "Blue" Write-Output "...Content Processing Component on $APP01" $host.ui.RawUI.ForegroundColor = "DarkGreen" New-SPEnterpriseSearchContentProcessingComponent -SearchTopology $Topology -SearchServiceInstance $SSI1 $host.ui.RawUI.ForegroundColor = "Blue" Write-Output "...Analytics Processing Component on $APP01" $host.ui.RawUI.ForegroundColor = "DarkGreen" New-SPEnterpriseSearchAnalyticsProcessingComponent -SearchTopology $Topology -SearchServiceInstance $SSI1 $host.ui.RawUI.ForegroundColor = "Blue" Write-Output "...Administration Component on $WFE01" $host.ui.RawUI.ForegroundColor = "DarkGreen" New-SPEnterpriseSearchAdminComponent -SearchTopology $Topology -SearchServiceInstance $SSI2 $host.ui.RawUI.ForegroundColor = "Blue" Write-Output "...Query Component on $WFE01" $host.ui.RawUI.ForegroundColor = "DarkGreen" New-SPEnterpriseSearchQueryProcessingComponent -SearchTopology $Topology -SearchServiceInstance $SSI2 $host.ui.RawUI.ForegroundColor = "Blue" Write-Output "...Index Component on $WFE01" $host.ui.RawUI.ForegroundColor = "DarkGreen" New-SPEnterpriseSearchIndexComponent -SearchTopology $Topology -SearchServiceInstance $SSI2 -IndexPartition 0 $host.ui.RawUI.ForegroundColor = "Blue" Write-Output "...Administration Component on $WFE02" $host.ui.RawUI.ForegroundColor = "DarkGreen" New-SPEnterpriseSearchAdminComponent -SearchTopology $Topology -SearchServiceInstance $SSI3 $host.ui.RawUI.ForegroundColor = "Blue" Write-Output "...Query Component on $WFE02" $host.ui.RawUI.ForegroundColor = "DarkGreen" New-SPEnterpriseSearchQueryProcessingComponent -SearchTopology $Topology -SearchServiceInstance $SSI3 $host.ui.RawUI.ForegroundColor = "Blue" Write-Output "...Index Component on $WFE02" $host.ui.RawUI.ForegroundColor = "DarkGreen" New-SPEnterpriseSearchIndexComponent -SearchTopology $Topology -SearchServiceInstance $SSI3 -IndexPartition 0 $host.ui.RawUI.ForegroundColor = "Blue" Write-Output " " Write-Output "Complete" # Activate Search Toplogy Write-Output "Applying new Topology" $host.ui.RawUI.ForegroundColor = "DarkGreen" Set-SPEnterpriseSearchTopology -Identity $Topology $host.ui.RawUI.ForegroundColor = "Blue" Write-Output "Compete" $host.ui.RawUI.ForegroundColor = "DarkGreen" Get-SPEnterpriseSearchTopology -SearchApplication $ssa Get-SPEnterpriseSearchStatus -SearchApplication $ssa -Text $host.ui.RawUI.ForegroundColor = $col
Further detail can be found in this Technet article.