40
SharePoint 2016 Search Mike Maadarani SharePoint Architect, MVP

SharePoint 2016 Search - SharePoint Saturday Events · •If you plan password synchronization then ... New-Variable -Option Constant -Name PROVISIONINGAPI ... •Multiple on-premises

  • Upload
    builiem

  • View
    225

  • Download
    3

Embed Size (px)

Citation preview

Page 1: SharePoint 2016 Search - SharePoint Saturday Events · •If you plan password synchronization then ... New-Variable -Option Constant -Name PROVISIONINGAPI ... •Multiple on-premises

SharePoint 2016 Search

Mike MaadaraniSharePoint Architect, MVP

Page 2: SharePoint 2016 Search - SharePoint Saturday Events · •If you plan password synchronization then ... New-Variable -Option Constant -Name PROVISIONINGAPI ... •Multiple on-premises

Thank You for being a part of SharePoint Saturday Nashville!

Platinum Sponsors

Gold Sponsors Silver Sponsors Bronze

Page 3: SharePoint 2016 Search - SharePoint Saturday Events · •If you plan password synchronization then ... New-Variable -Option Constant -Name PROVISIONINGAPI ... •Multiple on-premises

BJ's Brewhouse2455 Medical Center Pkwy

Giveaways #SharePint

3:45PMRoom S204

Must be present to win!

Page 4: SharePoint 2016 Search - SharePoint Saturday Events · •If you plan password synchronization then ... New-Variable -Option Constant -Name PROVISIONINGAPI ... •Multiple on-premises

Welcome & Introduction

Mike Maadarani, Ottawa

• App Dev and Architecture for over 21 years (18 Years Microsoft, 3 Years with the “Other Guys”)

• Business focused on Enterprise Content Management, Search, & Publishing Sites

• Architect, trainer, and presenter

[email protected]

www.maadarani.com @mikemaadarani

Page 5: SharePoint 2016 Search - SharePoint Saturday Events · •If you plan password synchronization then ... New-Variable -Option Constant -Name PROVISIONINGAPI ... •Multiple on-premises

Past and Future What’s new?

Agenda

Closing and Q&ADemoSharePoint 2016

Search Overview

Cloud Search Service Application

Page 6: SharePoint 2016 Search - SharePoint Saturday Events · •If you plan password synchronization then ... New-Variable -Option Constant -Name PROVISIONINGAPI ... •Multiple on-premises
Page 7: SharePoint 2016 Search - SharePoint Saturday Events · •If you plan password synchronization then ... New-Variable -Option Constant -Name PROVISIONINGAPI ... •Multiple on-premises

FAST Search for SharePoint 2010

FAST

Content

SSA

FAST

Query

SSA

FAST back-end components

(managed separately)

Extensibility:

• Sandbox

• Entity

Extraction

Page 8: SharePoint 2016 Search - SharePoint Saturday Events · •If you plan password synchronization then ... New-Variable -Option Constant -Name PROVISIONINGAPI ... •Multiple on-premises

SharePoint 2013 Search Architecture

SharePoint

SP Apps

Devices

Non-SP UX

HTTP

File shares

SharePoint

User profiles

Lotus Notes

Documentum

Exchange folders

Custom - BCS

Public API

Search topology components

Page 9: SharePoint 2016 Search - SharePoint Saturday Events · •If you plan password synchronization then ... New-Variable -Option Constant -Name PROVISIONINGAPI ... •Multiple on-premises

2016 Search

Hybrid Search is here; and easier to implement!

Scale up to 500 million items

20 million items per index (x25 index partitions)

Increaser performance optimization to the query processing

New failure logic for queries between index replicas

9

Page 10: SharePoint 2016 Search - SharePoint Saturday Events · •If you plan password synchronization then ... New-Variable -Option Constant -Name PROVISIONINGAPI ... •Multiple on-premises

What is hybrid search?

Unified Search Result Set from both On-Perm and SharePoint Online

Delve Integration

Content Sources:

On-Prem, SPO, OneDrive, Shared Drives

Page 11: SharePoint 2016 Search - SharePoint Saturday Events · •If you plan password synchronization then ... New-Variable -Option Constant -Name PROVISIONINGAPI ... •Multiple on-premises

Hybrid Search in 2016

Page 12: SharePoint 2016 Search - SharePoint Saturday Events · •If you plan password synchronization then ... New-Variable -Option Constant -Name PROVISIONINGAPI ... •Multiple on-premises

Hybrid Search in 2016

Page 13: SharePoint 2016 Search - SharePoint Saturday Events · •If you plan password synchronization then ... New-Variable -Option Constant -Name PROVISIONINGAPI ... •Multiple on-premises

What is Federated Hybrid Search

Page 14: SharePoint 2016 Search - SharePoint Saturday Events · •If you plan password synchronization then ... New-Variable -Option Constant -Name PROVISIONINGAPI ... •Multiple on-premises

1. SP2013 with August 2015 CU or SP 2016

2. O365 Subscription

3. Azure Subscription

4. Synchronize users and groups from on-premises to Office365 Azure Active Directory – AAD Connect

5. Create cloud Search service application

6. Install onboarding pre-requisites

7. Execute onboarding script

Mandatory Requirements

Page 15: SharePoint 2016 Search - SharePoint Saturday Events · •If you plan password synchronization then ... New-Variable -Option Constant -Name PROVISIONINGAPI ... •Multiple on-premises

Sync

SP 2013 SP 2010 SP 2007 Fileshares BCS

Cloud SSA

SPO

Search Index

1

2

34

5

67

Logical architecture: crawling

Corporate

network

Office 365

Page 16: SharePoint 2016 Search - SharePoint Saturday Events · •If you plan password synchronization then ... New-Variable -Option Constant -Name PROVISIONINGAPI ... •Multiple on-premises

AD Sync Options

Tool TechNet Links

DirSync https://msdn.microsoft.com/en-us/library/azure/hh967642.aspx

https://msdn.microsoft.com/en-us/library/azure/jj151831.aspx

AADSync https://msdn.microsoft.com/en-us/library/azure/dn790204.aspx

AADConnect https://azure.microsoft.com/en-us/documentation/articles/active-

directory-aadconnect/

Page 17: SharePoint 2016 Search - SharePoint Saturday Events · •If you plan password synchronization then ... New-Variable -Option Constant -Name PROVISIONINGAPI ... •Multiple on-premises

Azure AD Connect

SID S-1-5-21-1212121212-

1212121212-1212

[email protected]

msOnline-

OnPremiseSecurity

Identifier

S-1-5-21-1212121212-1212121212-

1212

PUID PUID-XXXX-XXXXXXXXXX

Page 18: SharePoint 2016 Search - SharePoint Saturday Events · •If you plan password synchronization then ... New-Variable -Option Constant -Name PROVISIONINGAPI ... •Multiple on-premises

• Need Azure Subscription or trial subscription or Office 365 paid license

• Verified domain; xxx.onmicrosoft.com is not enough

• On-premise:• AD Server must be 2003 or later

• If password writeback, then min 2008 with latest SP and KB2386717; otherwise go 2008 R2+

• Azure AD Connect can be installed on AD or any server part of the domain

• If you plan password synchronization then server must be 2008 R2 SP1 or later

• .NET 4.5.1 or later and PS 3.0

• If ADFS, then SSL is needed x.509 (self-signed is OK in test lab)

AAD Requirements

Page 19: SharePoint 2016 Search - SharePoint Saturday Events · •If you plan password synchronization then ... New-Variable -Option Constant -Name PROVISIONINGAPI ... •Multiple on-premises

AAD Install

Page 20: SharePoint 2016 Search - SharePoint Saturday Events · •If you plan password synchronization then ... New-Variable -Option Constant -Name PROVISIONINGAPI ... •Multiple on-premises

• Create your on-premise VMs

• Install and Configure SharePoint as usual

• Create your web application/Site Collection

• Add Content

SharePoint 2016

Page 21: SharePoint 2016 Search - SharePoint Saturday Events · •If you plan password synchronization then ... New-Variable -Option Constant -Name PROVISIONINGAPI ... •Multiple on-premises

• PowerShell or Central Admin

• If (PowerShell) {CloudIndex $true

IsHybrid = 1

}New-SPEnterpriseSearchServiceApplication -Name $SearchServiceAppName -ApplicationPool $appPool -DatabaseServer $DatabaseServerName -CloudIndex$true

Create a Cloud SSA

Page 22: SharePoint 2016 Search - SharePoint Saturday Events · •If you plan password synchronization then ... New-Variable -Option Constant -Name PROVISIONINGAPI ... •Multiple on-premises

Cloud SSA PS$SSADB = "SharePoint_Demo_Search"

$SSAName = "Search Service Application SPS Nashville"

$SVCAcct = "mcm\sp_search"

$SSI = get-spenterprisesearchserviceinstance -local

#1. Start the search services for SSI

Start-SPEnterpriseSearchServiceInstance -Identity $SSI

#2. Create the Application Pool

$AppPool = new-SPServiceApplicationPool -name $SSAName"-AppPool" -account $SVCAcct

#3. Create the search application and set it to a variable

$SearchApp = New-SPEnterpriseSearchServiceApplication -Name $SSAName -applicationpool $AppPool -databaseserver SQL2012 -

databasename $SSADB –CloudIndex $true

#4. Create search service application proxy

$SSAProxy = new-SPEnterpriseSearchServiceApplicationProxy -name $SSAName" Application Proxy" -Uri $SearchApp.Uri.AbsoluteURI

#5. Provision Search Admin Component

Set-SPEnterpriseSearchAdministrationComponent -searchapplication $SearchApp -searchserviceinstance $SSI

#6. Create the topology

$Topology = New-SPEnterpriseSearchTopology -SearchApplication $SearchApp

#7. Assign server(s) to the topology

$hostApp1 = Get-SPEnterpriseSearchServiceInstance -Identity "SPWFE“

$Searchapp.SetProperty(“IsHybrid”,1)New-SPEnterpriseSearchAdminComponent -SearchTopology$Topology -SearchServiceInstance $hostApp1

New-SPEnterpriseSearchCrawlComponent -SearchTopology$Topology -SearchServiceInstance $hostApp1

New-SPEnterpriseSearchContentProcessingComponent -SearchTopology $Topology -SearchServiceInstance $hostApp1

New-SPEnterpriseSearchAnalyticsProcessingComponent -SearchTopology $Topology -SearchServiceInstance $hostApp1

New-SPEnterpriseSearchQueryProcessingComponent -SearchTopology $Topology -SearchServiceInstance $hostApp1

New-SPEnterpriseSearchIndexComponent -SearchTopology$Topology -SearchServiceInstance $hostApp1 –IndexPartition 0

#8. Create the topology

$Topology | Set-SPEnterpriseSearchTopology

Page 23: SharePoint 2016 Search - SharePoint Saturday Events · •If you plan password synchronization then ... New-Variable -Option Constant -Name PROVISIONINGAPI ... •Multiple on-premises
Page 24: SharePoint 2016 Search - SharePoint Saturday Events · •If you plan password synchronization then ... New-Variable -Option Constant -Name PROVISIONINGAPI ... •Multiple on-premises

Cloud SSA PS

Page 25: SharePoint 2016 Search - SharePoint Saturday Events · •If you plan password synchronization then ... New-Variable -Option Constant -Name PROVISIONINGAPI ... •Multiple on-premises

Validate Cloud SSA Topology

Add-PSSnapin Microsoft.SharePoint.Powershell

$ssa = Get-SPEnterpriseSearchServiceApplication

Get-SPEnterpriseSearchTopology -Active -SearchApplication $ssa

Get-SPEnterpriseSearchStatus -SearchApplication $ssa -Text |ft Name,

state,Partition,Host -AutoSize

$ssa.CloudIndex

Page 26: SharePoint 2016 Search - SharePoint Saturday Events · •If you plan password synchronization then ... New-Variable -Option Constant -Name PROVISIONINGAPI ... •Multiple on-premises

Validate Cloud SSA Topology

Page 27: SharePoint 2016 Search - SharePoint Saturday Events · •If you plan password synchronization then ... New-Variable -Option Constant -Name PROVISIONINGAPI ... •Multiple on-premises

• Only 1 Cloud SSA Per Farm

• Multiple classic SSA can be created

• Topology Scaling is still the same

Considerations

Page 28: SharePoint 2016 Search - SharePoint Saturday Events · •If you plan password synchronization then ... New-Variable -Option Constant -Name PROVISIONINGAPI ... •Multiple on-premises

Prerequisites:

• Microsoft Online Services Sign-In Assistanthttps://www.microsoft.com/en-ca/download/details.aspx?id=28177

***Need to Reboot before Proceeding to the next install***

• Microsoft Azure AD PowerShellhttp://go.microsoft.com/fwlink/p/?linkid=236297

Post Cloud SSA Installs - Onboarding

Page 29: SharePoint 2016 Search - SharePoint Saturday Events · •If you plan password synchronization then ... New-Variable -Option Constant -Name PROVISIONINGAPI ... •Multiple on-premises

• Microsoft Online Services Sign-In Assistant(get-service msoidsvc).Status

• Microsoft Azure AD PowerShellimport-module msonline –verbose

import-module msonlineextended -verbose

Validate your installs

Page 30: SharePoint 2016 Search - SharePoint Saturday Events · •If you plan password synchronization then ... New-Variable -Option Constant -Name PROVISIONINGAPI ... •Multiple on-premises

Param(

[Parameter(Mandatory=$true, HelpMessage="SharePoint Online portal URL, for example 'https://contoso.sharepoint.com'.")]

[ValidateNotNullOrEmpty()]

[string] $PortalUrl,

[Parameter(Mandatory=$false, HelpMessage="Name or id (Guid) of the cloud Search service application, created with the CreateCloudSSAscript.")]

[ValidateNotNullOrEmpty()]

[string] $CloudSsaId,

[Parameter(Mandatory=$false, HelpMessage="Logon credential for tenant admin. Will be prompted if not specified.")]

[PSCredential] $Credential

)

if ($ACS_APPPRINCIPALID -eq$null) {

New-Variable -Option Constant -Name ACS_APPPRINCIPALID -Value '00000001-0000-0000-c000-000000000000'

New-Variable -Option Constant -Name ACS_HOST -Value "accounts.accesscontrol.windows.net"

New-Variable -Option Constant -Name PROVISIONINGAPI_WEBSERVICEURL -Value "https://provisioningapi.microsoftonline.com/provisioningwebservice.svc"

New-Variable -Option Constant -Name SCS_AUTHORITIES -Value @(

"*.search.msit.us.trafficmanager.net",

"*.search.production.us.trafficmanager.net",

"*.search.production.emea.trafficmanager.net",

"*.search.production.apac.trafficmanager.net"

)

}

New-Variable -Option Constant -Name SCS_APPPRINCIPALID -Value '8f0dc9ad-0d19-4fec-a421-6d0279080014'

New-Variable -Option Constant -Name SCS_APPPRINCIPALDISPLAYNAME -Value 'Search Content Service'

New-Variable -Option Constant -Name SP_APPPRINCIPALID -Value '00000003-0000-0ff1-ce00-000000000000'

New-Variable -Option Constant -Name SPO_MANAGEMENT_APPPROXY_NAME -Value 'SPO App Management Proxy'

New-Variable -Option Constant -Name ACS_APPPROXY_NAME -Value 'ACS Proxy'

New-Variable -Option Constant -Name ACS_STS_NAME -Value 'ACS-STS'

New-Variable -Option Constant -Name AAD_METADATAEP_FSTRING -Value 'https://{0}/{1}/metadata/json/1'

$SP_VERSION = "15"

$regKey= Get-ItemProperty-Path "HKLM:\SOFTWARE\Microsoft\Office Server\15.0\Search" -ErrorActionSilentlyContinue

if ($regKey-eq$null) {

$regKey= Get-ItemProperty-Path "HKLM:\SOFTWARE\Microsoft\Office Server\16.0\Search" -ErrorActionSilentlyContinue

if ($regKey-eq$null) {

throw "Unable to detect SharePoint installation."

On-Boarding Process

Page 31: SharePoint 2016 Search - SharePoint Saturday Events · •If you plan password synchronization then ... New-Variable -Option Constant -Name PROVISIONINGAPI ... •Multiple on-premises

Script Provided By the Product Group

4 stages:

1. Get-HybridSSA

2. Prepare-Environment

3. Connect-SPFarmtoAAD

4. Add-ServicePrincipal

On-Boarding Process

Page 32: SharePoint 2016 Search - SharePoint Saturday Events · •If you plan password synchronization then ... New-Variable -Option Constant -Name PROVISIONINGAPI ... •Multiple on-premises

1. Get-HybridSSA

This stage validates that the cloud SSA name supplied as a parameter to the script execution is valid. If multiple SSAs are found and no parameter is supplied, then it attempts to validate an SSA that has the IsHybrid property set to 1.

On-Boarding Process

Page 33: SharePoint 2016 Search - SharePoint Saturday Events · •If you plan password synchronization then ... New-Variable -Option Constant -Name PROVISIONINGAPI ... •Multiple on-premises

1. Prepare-Environment

This stage checks that the prerequisites for deployment are installed. It checks for MicrosoftOnline Single Sign-on Assistant and for Windows Azure PowerShell. If either of these tools are missing the script will exit with a prompt to install them.

On-Boarding Process

Page 34: SharePoint 2016 Search - SharePoint Saturday Events · •If you plan password synchronization then ... New-Variable -Option Constant -Name PROVISIONINGAPI ... •Multiple on-premises

1. Connect-SPFarmtoAAD

This completes the OAuth trust configuration with Azure Access Control services (ACS) and deploys the ACS Proxy. Additionally, it deploys a new SPO connection proxy to enable the farm to communicate with the external endpoint of the cloud search service

On-Boarding Process

Page 35: SharePoint 2016 Search - SharePoint Saturday Events · •If you plan password synchronization then ... New-Variable -Option Constant -Name PROVISIONINGAPI ... •Multiple on-premises

1. Add-ServicePrincipal

The penultimate stage adds the O365 Service Principal ID to the local farm and sets the correct Service Principal Name in Azure AD for the on-premises url. This ensures outbound query federation can succeed between the O365 tenant and the on-premises farm.

On-Boarding Process

Page 36: SharePoint 2016 Search - SharePoint Saturday Events · •If you plan password synchronization then ... New-Variable -Option Constant -Name PROVISIONINGAPI ... •Multiple on-premises
Page 37: SharePoint 2016 Search - SharePoint Saturday Events · •If you plan password synchronization then ... New-Variable -Option Constant -Name PROVISIONINGAPI ... •Multiple on-premises

Example search verticals (1)

SharePoint Online

Custom result source using Local SharePoint results plus a filter which excludes results from on-premises

TIP: Can be used during validation of hybrid search in the production tenant.

Result source query:

{searchTerms} NOT(IsExternalContent:1)

Example search verticals

Page 38: SharePoint 2016 Search - SharePoint Saturday Events · •If you plan password synchronization then ... New-Variable -Option Constant -Name PROVISIONINGAPI ... •Multiple on-premises

On-Premises Search

• Where is my content???

• Search Center Returns no results

• RE-configuration of the on-premises search is required• Federated Search settings

Page 39: SharePoint 2016 Search - SharePoint Saturday Events · •If you plan password synchronization then ... New-Variable -Option Constant -Name PROVISIONINGAPI ... •Multiple on-premises

In Review: Session Objectives And Takeaways

• Cloud Search Service Application• One Index in the cloud

• Multiple on-premises data sources + SharePoint Online

• One Search Center; One User Experience

• Configurations needed• AADConnect, Cloud SSA, Online Services Sign-in Assistant, Azure PowerShell,

Onboarding Script

• One Cloud SSA per tenant

• Scaling and optimization is the same as before

Page 40: SharePoint 2016 Search - SharePoint Saturday Events · •If you plan password synchronization then ... New-Variable -Option Constant -Name PROVISIONINGAPI ... •Multiple on-premises

Thank [email protected]

@mikemaadarani

www.maadarani.com