Best Practices for SharePoint 2013 Search Service Application for SMSP

For Microsoft SharePoint Server 2013 Search Service application SMSP focuses on the topology of the index partition. We recommend that there is one index partition for every 10 million items in the search index. The following table illustrates an example of a medium sized Search farm with approximately 40 million items in the search index.


Scenario A

If there are enough server resource available to create a fully fault-tolerant and high-performance search farm you can distribute the index partitions across several different servers and use different volumes for the index partitions.

Scenario B

If you cannot create a fault-tolerant implementation you can configure index replicas making sure that the search index files are on one server and ensure the index partitions are in the same volume.

Scenario C

If there are not enough server resources to ensure high-performance you can distribute the index partitions across two hosts and configure them to be in the same volume.

Note: In this scenario you can setup the volume to use SnapMirror protection. Select Update SnapMirror after operation option when backing up the Search service application.


Search Index Data Migration

We introduced the ability to handle Search Index data migration with SnapManager 8.0 for SharePoint so you can use the built-in feature to handle migration as shown below.

In SnapManager 7.1 for SharePoint we did not support index migration from the management interface and it required administrators to manually migrate the SharePoint 2013 index. For those of you reading this that are still on SMSP 7.1 here are the steps for how to migrate SharePoint 2013 index to a NetApp LUN.


Manage the Search Topology in SharePoint Server 2013

1) Review the search topology from SharePoint Central Administration

2) Ensure that no crawls have been started and that the search index is empty on the server that hosts Central Administration.

  1. Verify that the user account that is performing the index migration is an administrator for the Search service application.
  2. Using SharePoint Central Administration navigate to the Application Management section and click Manage service applications
  3. In the list of service applications click the Search service application.
  4. Verify that the search index is empty. To do this on the Search Administration page under the System Status the Searchable items display should read 0.
  5. Lastly, verify that no crawls have been started. To do this on the Search Administration page under Crawling, click Content Sources. On the Manage Content Sources page verify that the Status column for any existing content source displays Idle.

3) Start a SharePoint 2013 Management Shell (PowerShell) on one of the servers in the farm, preferably the server hosting Central Administration.


Note: Depending on which scenario you are implementing the following PowerShell would need to be modified. In this example I am implementing a modified version of Scenario A.


4) Specify the new servers you want to add search components to, start a Search Service instance on these servers and create references to the individual Search Service instances


$hostA = Get-SPEnterpriseSearchServiceInstance -Identity "SP13CA324RH"

$hostB = Get-SPEnterpriseSearchServiceInstance -Identity "SP13WFE322RH"

$hostC = Get-SPEnterpriseSearchServiceInstance -Identity "SP13CA338RH"

Start-SPEnterpriseSearchServiceInstance -Identity $hostA

Start-SPEnterpriseSearchServiceInstance -Identity $hostB

Start-SPEnterpriseSearchServiceInstance -Identity $hostC


5) Wait until all the Search Service instances are running. Using the same Management Shell run the following commands until the return state is Online for each of the instances.


Get-SPEnterpriseSearchServiceInstance -Identity $hostA

Get-SPEnterpriseSearchServiceInstance -Identity $hostB

Get-SPEnterpriseSearchServiceInstance -Identity $hostC


6) Create a new search topology and a reference to the new search topology


$ssa = Get -SPEnterpriseSearchServiceApplication

$newTopology = New -SPEnterpriseSearchTopology -SearchApplication $ssa


7) Add all the search components to the new search topology


New -SPEnterpriseSearchAdminComponent -SearchTopology $newTopology -SearchServic eInstance $hostA

New -SPEnterpriseSearchQueryProcessingComponent -SearchTopology $newTopology -SearchServiceInstance $hostA

New -SPEnterpriseSearchAdminComponent -SearchTopology $newTopology -SearchServiceInstance $hostB

New -SPEnterpriseSearchCrawlComponent -SearchTopology $newTopology  -SearchServiceInstance $hostB

New -SPEnterpriseSearchContentProcessingComponent -SearchTopology $newTopology  -SearchServiceInstance $hostB

New -SPEnterpriseSearchAnalyticsProcessingComponent -SearchTopology $newTopology -SearchSe rviceInstance $hostB

New -SPEnterpriseSearchQueryProcessingComponent -SearchTopology $newTopology -SearchServiceInstance $hostB

New -SPEnterpriseSearchAdminComponent -SearchTopology $newTopology -SearchServiceInstance $hostC

New -SPEnterpriseSearchQueryProcessingComponent -SearchTopology $newTopology -SearchServiceInstance $hostC

New -SPEnterpriseSearchCrawlComponent -SearchTopology $newTopology -SearchServiceInstance $hostC

New -SPEnterpriseSearchContentProcessingComponent -SearchTopology $newTopology -SearchSe rviceInstance $hostC

New -SPEnterpriseSearchAnalyticsProcessingComponent -SearchTopology $newTopology -SearchServiceInstance $hostC

$i1=New -SPEnterpriseSearchIndexComponent -SearchTopology $newTopology -SearchServiceInstance $hostA -IndexPartition 1

$i2=New -SPEnterpriseSearchIndexComponent -SearchTopology $newTopology -SearchServiceInstance $hostB -IndexPartition 1

$i3=New -SPEnterpriseSearchIndexComponent -SearchTopology $newTopology -SearchServiceInstance $hostC -IndexPartition 1

$i4=New -SPEnterpriseSearchIndexComponent -SearchTopology $newTopology -SearchServiceInstance $hostA -IndexPartition 0

$i5=New -SPEnterpriseSearchIndexComponent -SearchTopology $newTopology -SearchServiceInstance $hostB -IndexPartition 0

$i6=New -SPEnterpriseSearchIndexComponent -SearchTopology $newTopology -SearchServiceInstance $hostC -IndexPartition 0

$i1.RootDirectory = "E: \IndexComponent"

$i2.RootDirectory = "E: \IndexComponent"

$i3.RootDirectory = "E: \IndexComponent"

$i4.RootDirectory = "E: \IndexComponent"

$i5.RootDirectory = "E: \IndexComponent"

$i6.RootDirectory = "E: \IndexComponent"


Note: E:\ is the NetApp LUN target.


8) Activate the new search topology


Set-SPEnterpriseSearchTopology -Identity $newTopology


9) Verify that the new search topology is active


Get-SPEnterpriseSearchStatus -SearchApplication $ssa -Text



Happy Indexing!


rbarker Netapp Alumni

One more detail I wanted to add. On several occasions I have run into the dreaded State: Degraded, if you run into this issue check this Technet article for full details.

rbarker Netapp Alumni

Had a colleague pass along a script he has used to perform the same process as above, check the gallery on Technet for full details. Thanks Rahul Sharma (shout out!)