SharePoint 2013 以降の Search Service Application のタイマージョブについて

こんにちは。SharePoint サポートの清です。

SharePoint 2013, SharePoint 2016 の複数台構成の環境で、Search Service Application を作成後、検索トポロジーを変更いただく際にご留意いただきたいことをお知らせします。

現象

オンプレミスの SharePoint Server 製品では、Search Service Application の検索コンポーネントを複数のサーバーに配置するよう構成できます。

Search Service Application に関連する一部のタイマージョブについて、検索サービス アプリケーションを作成したサーバー (管理コンポーネントが最初に作成されたサーバー) に紐づくタイマージョブがあります。

これらのタイマージョブと現在の検索管理コンポーネントをホストするサーバーが一致しない場合や、ファームにタイマージョブが存在しない場合には、正常に動作しないことが報告されています。

 

- 詳細

サーバーの全体管理サイトから Search Service Application を作成いただくと、サーバーの全体管理サイトをホストするサーバーに管理コンポーネントが設定されます。

たとえば、サーバーの全体管理サイトから作成後、検索トポロジーを変更して他のサーバーに管理コンポーネントを構成した場合、変更後のサーバーでジョブが動作するようには構成されません。

その他、ジョブが動作しているサーバーをファームから削除した際、該当のジョブが削除される報告を確認しております。

 

Search Service Application のサーバー固有のタイマー ジョブとして報告されているものは以下です。

DisplayName Name
検索カスタム辞書の更新 Search Custom Dictionaries Update for Search Application <SSA GUID>
検索アプリケーション <Search Service Application 名> のクロール ログのクリーンアップ Crawl Log Cleanup for Search Application <SSA GUID>
<Search Service Application 名>  のクロール ストア パーティションの再調整 Rebalance crawl store partitions for <SSA GUID>
検索アプリケーション <Search Service Application 名> の利用状況分析タイマー ジョブ Usage Analytics Timer Job for Search Application <SSA GUID>
スペル チェックのカスタマイズのアップグレード Spelling Customizations Upgrade for Search Application <SSA GUID>
スペル チェック辞書の更新 Spelling Dictionary Update for Search Application <SSA GUID>
Search Service Application <Search Service Application 名> の分析タイマー ジョブ Analytics Timer Job for Search Service Application <SSA GUID>
検索アプリケーション <Search Service Application 名> 用のクエリ分類辞書の更新プログラムです。 Query Classification Dictionary Update for Search Application <SSA GUID>

 

対処方法

これらのタイマージョブは、Search Service Application の作成時に登録されます。

そのため、タイマージョブに問題が発生した場合には、Search Service Application を再作成することでタイマージョブを含めて作り直すことが可能です。

検索専用の SharePoint サーバーで、はじめから管理コンポーネントをホストさせる場合には、SharePoint 管理シェルより作成することをご検討ください。

 

<手順>

1) 検索コンポーネントをホストするサーバーにファーム アカウントでログオンし、[SharePoint 2013 管理シェル] または、[SharePoint 2016 管理シェル] を管理者権限で起動します。

2) 以下のコマンドを実行し、Search Service Application と、Search Service Application Proxy を新規に作成します。

$ssa = New-SPEnterpriseSearchServiceApplication -Name "SSA" -ApplicationPool "SharePoint Web Services Default";$ssaproxy = New-SPEnterpriseSearchServiceApplicationProxy -SearchApplication $ssa -Name "SSA Proxy"; 

 

3) 検索トポロジーを構成します。以下は、2 台のサーバーに対して各検索コンポーネントを割り当てる例です。

Search01, Search02 は検索コンポーネントをホストするサーバー名に適宜変更ください。

$newTopology = $ssa.ActiveTopology.Clone()$hostA = Get-SPEnterpriseSearchServiceInstance -Identity "Search01";$hostB = Get-SPEnterpriseSearchServiceInstance -Identity "Search02"; # サーバー上で、検索サービス インスタンスがオンラインであることを確認します。# オフラインの場合は、Start-SPEnterpriseSearchServiceInstance -Identity "Search01"; Start-SPEnterpriseSearchServiceInstance -Identity "Search02"; で開始できます。$hostA;$hostB; New-SPEnterpriseSearchAdminComponent -SearchTopology $newTopology -SearchServiceInstance $hostA;New-SPEnterpriseSearchCrawlComponent -SearchTopology $newTopology -SearchServiceInstance $hostA;New-SPEnterpriseSearchContentProcessingComponent -SearchTopology $newTopology -SearchServiceInstance $hostA;New-SPEnterpriseSearchAnalyticsProcessingComponent -SearchTopology $newTopology -SearchServiceInstance $hostA;New-SPEnterpriseSearchQueryProcessingComponent -SearchTopology $newTopology -SearchServiceInstance $hostA;New-SPEnterpriseSearchIndexComponent -SearchTopology $newTopology -SearchServiceInstance $hostA -IndexPartition 0; New-SPEnterpriseSearchAdminComponent -SearchTopology $newTopology -SearchServiceInstance $hostB;New-SPEnterpriseSearchCrawlComponent -SearchTopology $newTopology -SearchServiceInstance $hostB;New-SPEnterpriseSearchContentProcessingComponent -SearchTopology $newTopology -SearchServiceInstance $hostB;New-SPEnterpriseSearchAnalyticsProcessingComponent -SearchTopology $newTopology -SearchServiceInstance $hostB;New-SPEnterpriseSearchQueryProcessingComponent -SearchTopology $newTopology -SearchServiceInstance $hostB;New-SPEnterpriseSearchIndexComponent -SearchTopology $newTopology -SearchServiceInstance $hostB -IndexPartition 0; 

 

4) トポロジーをアクティブ化します。完了に時間が掛かる場合がございます。

$newTopology.Activate();$ssa.ActiveTopology; 

 

 

今回の投稿は以上です。

本情報の内容は、作成日時点でのものであり、予告なく変更される場合があります。