Thursday 6 March 2014

Search Service Application

A - OBJECTIVE: to create a new Search Service Application.

B - PROBLEMS :

1. Search Application: Index Component grows bigger when more content is populated at SharePoint farm.

2. Available Drive Space: this should have at least twice the value of physical memory (RAM). By default, all Search components are saved at C drive and it will consume this drive; hence, it leads to many operational issues. For example: permissions removed silently due to the problem at Virtual memory swap file.

C - SOLUTION:

1. Search Availability: to ensure the Search service is available to users, "Query Processing" and "Index" components should be replicated at all SharePoint servers.


2. Index Components of Search Application should be allocated at a separate drive to cater for future growth & access speed.
# to move the Index Components at all SharePoint servers to drive I
New-SPEnterpriseSearchIndexComponent -SearchTopology $new -IndexPartition 0 -SearchServiceInstance $hostWFE1 -RootDirectory "I:\FEOshareSearchComponents2015"
New-SPEnterpriseSearchIndexComponent -SearchTopology $new -IndexPartition 0 -SearchServiceInstance $hostWFE2 -RootDirectory "I:\FEOshareSearchComponents2015"
New-SPEnterpriseSearchIndexComponent -SearchTopology $new -IndexPartition 0 -SearchServiceInstance $hostApp -RootDirectory "I:\FEOshareSearchComponents2015"


D - SOURCE CODE:
### GET THE EXISTING ENVIRONMENT PARAMETERS ###
$ssa = Get-SPEnterpriseSearchServiceApplication "Search Service Application - FEOshare"
$current=Get-SPEnterpriseSearchTopology -SearchApplication $ssa -Active
$new=New-SPEnterpriseSearchTopology -Clone -SearchApplication $ssa -SearchTopology $current


# list all search servers deployed in the farm
$hostApp = Get-SPEnterpriseSearchServiceInstance -Identity "kc1mspappprd01"
$hostWFE1 = Get-SPEnterpriseSearchServiceInstance -Identity "kc1mspwfeprd01"
$hostWFE2 = Get-SPEnterpriseSearchServiceInstance -Identity "kc1mspwfeprd02"

# check the settings of the search application
Get-SPEnterpriseSearchStatus -SearchApplication "Search Service Application - FEOshare"


### RE-CONFIGURE TO ALLOCATE SEARCH COMPONENTS ###

# delete the old configuration at the default location (drive C)
$del = Get-SPEnterpriseSearchComponent -SearchTopology $new | ? {$_.Name -eq "IndexComponent1"}
Remove-SPEnterpriseSearchComponent -Identity $del -SearchTopology $new


# create new INDEX components at new location
# must configure RootDirectory https://technet.microsoft.com/en-us/library/jj219721.aspx
New-SPEnterpriseSearchIndexComponent -SearchTopology $new -IndexPartition 0 -SearchServiceInstance $hostWFE1 -RootDirectory "L:\FEOshareSearch2015"
New-SPEnterpriseSearchIndexComponent -SearchTopology $new -IndexPartition 0 -SearchServiceInstance $hostWFE2 -RootDirectory "L:\FEOshareSearchComponents2015"
New-SPEnterpriseSearchIndexComponent -SearchTopology $new -IndexPartition 0 -SearchServiceInstance $hostApp -RootDirectory "I:\FEOshareSearchComponents2015"


# create new QUERY PROCESSING component at new location
New-SPEnterpriseSearchQueryProcessingComponent -SearchTopology $new -SearchServiceInstance $hostWFE1
New-SPEnterpriseSearchQueryProcessingComponent -SearchTopology $new -SearchServiceInstance $hostWFE2

### SET THE NEW TOPOLOGY TO BE ACTIVE ###
Set-SPEnterpriseSearchTopology -Identity $new