Showing posts with label Search application. Show all posts
Showing posts with label Search application. Show all posts

Monday, April 23, 2018

Create new Search topology on two servers

Parameters to change:

$AppServer1 = write your app server name
$AppServer2 = write your app server name
$PrimaryIndexLocation = location of index. It would be best to put index on other partition then your system data. Do not forget to check if you already have this location created and if you have check if it is empty.
$ReplicaIndexLocation = location of index replica. It would be best to put replica on other partition then your system and index location. Do not forget to check if you already have this location created and if you have check if it is empty.
$SearchAppPoolAccountName = write your account
$DatabaseServer = database server name. Check do you have default instance (e.g. servername) or named instance (e.g. servername\instancename)


Script:

********************************

$AppServer1 = "First app server"
$AppServer2 = "Second app server"
$SearchAppPoolName        = "SearchServiceApp"
$SearchAppPoolAccountName = "YourDomain\sp_content"
$SearchServiceName        = "SearchServiceApp"
$SearchServiceProxyName   = "SearchServiceAppProxy"
$DatabaseServer           = "DatabaseServer\InstanceName"
$DatabaseName             = "SearchServiceApp_DB"
$PrimaryIndexLocation     = "G:\Index"  #!!!!!Do not forget to check if you already have this location created and check if it is empty!!!!!
$ReplicaIndexLocation     = "X:\Index" #!!!!!Do not forget to check if you already have this location created and check if it is empty!!!!!

#Create a Search Service Application Pool
$spAppPool = New-SPServiceApplicationPool -Name $SearchAppPoolName -Account $SearchAppPoolAccountName -Verbose

#Start Search Service Instance on all Application Servers
Start-SPEnterpriseSearchServiceInstance $AppServer1 -ErrorAction SilentlyContinue
Start-SPEnterpriseSearchServiceInstance $AppServer2 -ErrorAction SilentlyContinue
Start-SPEnterpriseSearchQueryAndSiteSettingsServiceInstance $AppServer1 -ErrorAction SilentlyContinue
tart-SPEnterpriseSearchQueryAndSiteSettingsServiceInstance $AppServer2 -ErrorAction SilentlyContinue

#Create Search Service Application
$ServiceApplication = New-SPEnterpriseSearchServiceApplication -Partitioned -Name $SearchServiceName -ApplicationPool $spAppPool.Name -DatabaseServer $DatabaseServer -DatabaseName $DatabaseName

#Create Search Service Proxy
New-SPEnterpriseSearchServiceApplicationProxy -Partitioned -Name $SearchServiceProxyName -SearchApplication $ServiceApplication

$clone = $ServiceApplication.ActiveTopology.Clone()
$AppServer1SSI = Get-SPEnterpriseSearchServiceInstance -Identity $AppServer1
$AppServer2SSI = Get-SPEnterpriseSearchServiceInstance -Identity $AppServer2

#We need only one admin component
New-SPEnterpriseSearchAdminComponent –SearchTopology $clone -SearchServiceInstance $AppServer1SSI

#We need two content processing components for HA
New-SPEnterpriseSearchContentProcessingComponent –SearchTopology $clone -SearchServiceInstance $AppServer1SSI
New-SPEnterpriseSearchContentProcessingComponent –SearchTopology $clone -SearchServiceInstance $AppServer2SSI

#We need two analytics processing components for HA
New-SPEnterpriseSearchAnalyticsProcessingComponent –SearchTopology $clone -SearchServiceInstance $AppServer1SSI
New-SPEnterpriseSearchAnalyticsProcessingComponent –SearchTopology $clone -SearchServiceInstance $AppServer2SSI

#We need two crawl components for HA
New-SPEnterpriseSearchCrawlComponent –SearchTopology $clone -SearchServiceInstance $AppServer1SSI
New-SPEnterpriseSearchCrawlComponent –SearchTopology $clone -SearchServiceInstance $AppServer2SSI

#We need two query processing components for HA
New-SPEnterpriseSearchQueryProcessingComponent –SearchTopology $clone -SearchServiceInstance $AppServer1SSI
New-SPEnterpriseSearchQueryProcessingComponent –SearchTopology $clone -SearchServiceInstance $AppServer2SSI

#Set the primary and replica index location; ensure these drives and folders exist on application servers

#We need two index partitions and replicas for each partition. Follow the sequence.
New-SPEnterpriseSearchIndexComponent –SearchTopology $clone -SearchServiceInstance $AppServer1SSI -RootDirectory $PrimaryIndexLocation -IndexPartition 0
New-SPEnterpriseSearchIndexComponent –SearchTopology $clone -SearchServiceInstance $AppServer2SSI -RootDirectory $ReplicaIndexLocation -IndexPartition 0
New-SPEnterpriseSearchIndexComponent –SearchTopology $clone -SearchServiceInstance $AppServer2SSI -RootDirectory $PrimaryIndexLocation -IndexPartition 1
New-SPEnterpriseSearchIndexComponent –SearchTopology $clone -SearchServiceInstance $AppServer1SSI -RootDirectory $ReplicaIndexLocation -IndexPartition 1

$clone.Activate()

$ssa = Get-SPEnterpriseSearchServiceApplication
Get-SPEnterpriseSearchTopology -Active -SearchApplication $ssa
 
Write-Host "Search topology successfully created!"


********************************

Create new Search topology on single server

Parameters to change:
$AppServer = write your app server name
$IndexLocation = location of index. It would be best to put index on other partition then your system data. Do not forget to check if you already have this location created and if you have check if it is empty.
$SearchAppPoolAccountName = write your account
$DatabaseServer = database server name. Check do you have default instance (e.g. servername) or named instance (e.g. servername\instancename)
$DatabaseName = name of Search app database

Script:

********************************

Add-PsSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue

#Defaults
$AppServer = "SERVERNAME"
$IndexLocation = "E:\SharePointSearch"  #!!!!!Do not forget to check if you already have this location created and if you have check if it is empty!!!!!
$SearchAppPoolName = "SearchServiceAppPool"
$SearchAppPoolAccountName = "YourDomain\sp_content"
$SearchServiceName = "Search Service Application"
$SearchServiceProxyName = "Search Service Application Proxy"
$DatabaseServer = "DatabaseServer\InstanceName"
$DatabaseName = "SearchServiceApplication_DB"

#Create ApplicationPool
Write-Host "Creating Application Pool..."
$spAppPool = New-SPServiceApplicationPool -Name $SearchAppPoolName -Account $SearchAppPoolAccountName -Verbose

#Start Search Instances
Write-Host "Starting Search Service Instances..."
Start-SPEnterpriseSearchServiceInstance $AppServer -ErrorAction SilentlyContinue
Start-SPEnterpriseSearchQueryAndSiteSettingsServiceInstance $AppServer -ErrorAction SilentlyContinue

#Create Application
Write-Host "Creating Search Service Application..."
$searchServiceApp = New-SPEnterpriseSearchServiceApplication -Partitioned -Name $SearchServiceName -ApplicationPool $spAppPool.Name -DatabaseServer $DatabaseServer -DatabaseName $DatabaseName

#Create proxy
Write-Host "Creating Search Service Application Proxy..."
New-SPEnterpriseSearchServiceApplicationProxy -Partitioned -Name $SearchServiceProxyName -SearchApplication $searchServiceApp

#Clone the default Topology...create a new one...and then activate it
Write-Host "Configuring Search Component Topology..."
$clone = $searchServiceApp.ActiveTopology.Clone()
$searchServiceInstance = Get-SPEnterpriseSearchServiceInstance -Identity $AppServer

#Create new topoplogy
#Create Admin component
New-SPEnterpriseSearchAdminComponent –SearchTopology $clone -SearchServiceInstance $searchServiceInstance
#Create content processing component
New-SPEnterpriseSearchContentProcessingComponent –SearchTopology $clone -SearchServiceInstance $searchServiceInstance
#Create Analytics processing component
New-SPEnterpriseSearchAnalyticsProcessingComponent –SearchTopology $clone -SearchServiceInstance $searchServiceInstance
#Create Crawl component
New-SPEnterpriseSearchCrawlComponent –SearchTopology $clone -SearchServiceInstance $searchServiceInstance
#Create Index component
New-SPEnterpriseSearchIndexComponent –SearchTopology $clone -SearchServiceInstance $searchServiceInstance
#Create Query processing component
New-SPEnterpriseSearchQueryProcessingComponent –SearchTopology $clone -SearchServiceInstance $searchServiceInstance


#Activate topology
$clone.Activate()

Write-Host "Search topology successfully created!"

********************************