Управление компонентом индекса в SharePoint Server
**Применимо к:**SharePoint Server 2013, SharePoint Server 2016
**Последнее изменение раздела:**2017-09-08
Сводка. Узнайте, в каких случаях и как можно использовать Windows PowerShell для масштабирования индекса поиска в SharePoint Server путем добавления компонента индекса для создания дополнительной реплики индекса или раздела индекса.
В процедурах и примерах в этой статье предполагается, что установлены SharePoint Server и приложение службы поиска, существует топология поиска, а в индексе поиска SharePoint Server имеются элементы. Если SharePoint Server и приложение службы поиска установлены недавно и индекс поиска SharePoint Server пуст, выполните процедуры, описанные в статье Изменение топологии поиска по умолчанию в SharePoint Server, чтобы масштабировать топологию поиска.
Процедуры в этой статье применимы к компоненту индекса. Сведения об управлении компонентами обработки аналитики, обработки контента, обхода, администрирования поиска и обработки запросов см. в разделе Управление компонентами поиска в SharePoint Server.
Командлет PowerShell (New-SPEnterpriseSearchIndexComponent) компонента индекса служит для управления как разделами, так и репликами индекса. Каждый компонент индекса в топологии поиска представляет реплику индекса.
Индекс поиска делится на отдельные части, называемые разделами индекса. Каждый раздел индекса хранится на локальном диске в виде набора файлов. Чтобы масштабировать индекс поиска, необходимо добавить новый раздел индекса.
Чтобы обеспечить отказоустойчивость индекса поиска SharePoint Server, необходимо добавить реплику индекса для существующего раздела индекса в топологию поиска. Реплика индекса содержит ту же самую информацию.
В этой статье
Перед началом работы
Добавление реплики индекса в существующий раздел индекса
Добавление нового раздела индекса
Отмена процесса перераспределения разделов
Удаление компонента индекса
Перемещение компонента индекса
Перед началом работы
Перед началом работы убедитесь, что соблюдаются следующие требования.
Установлен SharePoint Server, и создано приложение службы поиска с топологией поиска.
Учетная запись, используемая для выполнения процедур в этой статье, входит в группу администраторов фермы.
Вы спланировали целевую топологию поиска и решили, на каких серверах должны размещаться разделы и реплики индекса.
SharePoint Server установлен на всех серверах, на которых должны размещаться компоненты индекса. При этом вы можете как создать новые серверы приложений, так и определить серверы в существующем развертывании. Серверы добавлены в ферму, и вы являетесь администратором всех этих серверов.
Добавление реплики индекса в существующий раздел индекса
Реплика индекса добавляется в топологию поиска для обеспечения отказоустойчивости существующего раздела индекса. Реплики индекса размещаются в отдельных доменах для отработки отказа на отдельных серверах. При добавлении реплики индекса вы добавляете в топологию поиска новый компонент индекса и связываете его с разделом индекса, реплику которого нужно создать.
Важно!
Эта процедура задействует Microsoft PowerShell. Вы можете выполнять команды Microsoft PowerShell на любом сервере в ферме. Однако чтобы ссылки на объекты Microsoft PowerShell можно было использовать между командами, следует применять одну и ту же Командная консоль SharePoint для всех команд Microsoft PowerShell в этой процедуре.
Добавление реплики индекса
Убедитесь, что учетная запись пользователя, с помощью которой выполняется данная процедура, является участником группы администраторов фермы.
Запустите командную консоль Командная консоль SharePoint на одном из серверов в ферме.
Запустите экземпляр службы поиска на сервере, на котором вы хотите создать реплику индекса, и создайте ссылку на идентификатор экземпляра службы поиска. В командной строке Microsoft PowerShell введите следующие команды.
$<host n> = Get-SPEnterpriseSearchServiceInstance -Identity "<Server name>" Start-SPEnterpriseSearchServiceInstance -Identity $<host n>
Где:
$<host n> — ссылка на объект PowerShell для экземпляра службы поиска.
<Server name> — сервер, на который вы хотите добавить компонент индекса. В качестве входных данных следует использовать допустимый GUID в формате
12345678-90ab-cdef-1234-567890bcdefgh
, допустимое имя сервера (например, myserver1) или экземпляр допустимого объекта SearchServiceInstance.
Например:
$hostA = Get-SPEnterpriseSearchServiceInstance -Identity "myserver1" Start-SPEnterpriseSearchServiceInstance -Identity $hostA
Подождите, пока запустится экземпляр службы поиска. В командной строке Microsoft PowerShell вводите следующую команду, пока она не вернет состояние Online:
Get-SPEnterpriseSearchServiceInstance -Identity $<host n>
Клонируйте активную топологию поиска. В командной строке Microsoft PowerShell введите следующие команды:
$ssa = Get-SPEnterpriseSearchServiceApplication $active = Get-SPEnterpriseSearchTopology -SearchApplication $ssa -Active $clone = New-SPEnterpriseSearchTopology -SearchApplication $ssa -Clone -SearchTopology $active
Добавьте новый компонент индекса и свяжите его с разделом. В командной строке Windows PowerShell введите следующие команды:
New-SPEnterpriseSearchIndexComponent -SearchTopology $clone -SearchServiceInstance <host n> -IndexPartition <Index partition number>
Где:
$clone — клонированная топология, которую вы изменяете.
$<host n> — ссылка на объект PowerShell, указывающая на запущенный экземпляр службы поиска на сервере, на который вы хотите добавить реплику индекса.
<Index partition number> — номер существующего раздела индекса, реплику которого вы создаете. Например, чтобы создать реплику раздела индекса 0, задайте для этого параметра значение 0.
Например:
New-SPEnterpriseSearchIndexComponent -SearchTopology $clone -SearchServiceInstance $hostA -IndexPartition 0
Активируйте клонированную топологию. В командной строке Microsoft PowerShell введите следующие команды:
Set-SPEnterpriseSearchTopology -Identity $clone
Убедитесь, что новая топология активна и что компонент индекса, представляющий новую реплику индекса, добавлен. В командной строке Microsoft PowerShell введите следующие команды:
Get-SPEnterpriseSearchTopology -Active -SearchApplication $ssa
Пронаблюдайте за распространением существующего индекса в новую реплику. Добавленная реплика индекса будет иметь состояние Деградация до тех пор, пока распространение не завершится. В командной строке Microsoft PowerShell введите следующие команды:
Get-SPEnterpriseSearchStatus -SearchApplication $ssa -Text
Повторяйте эту команду, пока все компоненты поиска, включая новый компонент индекса, не сообщат состояние Активный. Для большого индекса поиска на это может потребоваться несколько часов.
Добавление нового раздела индекса
При добавлении нового раздела необходимо выполнить перераспределение разделов индекса поиска. В зависимости от размера индекса поиска этот процесс может занять несколько часов.
Чтобы добавить раздел индекса и перераспределить разделы индекса поиска, нужно добавить новый компонент индекса в топологию поиска и связать его с новым номером раздела индекса. Добавление раздела индекса и перераспределение разделов следует производить отдельно. Этот процесс не следует запускать одновременно с внесением других изменений в топологию поиска.
Вам следует добавить в новый раздел индекса такое же число реплик, которое имеется в существующих разделах.
Перед добавлением нового раздела индекса в топологию поиска и перераспределением разделов индекса поиска выполните следующие действия.
Создайте резервную копию приложения службы поиска и существующего индекса поиска. См. статью Резервное копирование приложений службы поиска в SharePoint Server.
Убедитесь, что текущая активная топология находится в исправном состоянии. Чтобы просмотреть состояние топологии поиска, откройте страницу администрирования поиска в Центр администрирования или выполните командлет Microsoft PowerShell
Get-SPEnterpriseSearchStatus
.Убедитесь, что на сервере, на который вы будете добавлять раздел индекса, достаточно дискового пространства.
Предупреждение
Приложение службы поиска приостанавливается во время перераспределения разделов индекса и не может выполнять обход или индексирование контента. Кроме того, пользователи не могут выполнять запросы.
Добавление раздела индекса
Убедитесь, что учетная запись пользователя, с помощью которой выполняется данная процедура, является участником группы администраторов фермы.
Запустите командную консоль Командная консоль SharePoint на одном из серверов в ферме.
Запустите экземпляр службы поиска на всех серверах, на которые вы хотите добавить реплику для нового раздела индекса. Создайте ссылку на объект PowerShell, указывающую на экземпляр службы поиска. Она будет использоваться далее в этой процедуре. Для каждого сервера в командной строке Microsoft PowerShell введите следующие команды:
$<host n> = Get-SPEnterpriseSearchServiceInstance -Identity "<Server name>" Start-SPEnterpriseSearchServiceInstance -Identity $<host n>
Где:
<host n> — ссылка на объект PowerShell для экземпляра службы поиска.
<Server name> — сервер, на который вы хотите добавить компонент индекса. В качестве входных данных следует использовать допустимый GUID в формате
12345678-90ab-cdef-1234-567890bcdefgh
, допустимое имя сервера (например, myserver1) или экземпляр допустимого объекта SearchServiceInstance.
Например:
$hostC = Get-SPEnterpriseSearchServiceInstance -Identity "myserver3" Start-SPEnterpriseSearchServiceInstance -Identity $hostC $hostD = Get-SPEnterpriseSearchServiceInstance -Identity "myserver4" Start-SPEnterpriseSearchServiceInstance -Identity $hostD
Подождите, пока запустятся экземпляры службы поиска. Для каждого сервера в командной строке Microsoft PowerShell вводите следующую команду, пока она не вернет состояние Online:
Get-SPEnterpriseSearchServiceInstance -Identity $<host n>
Клонируйте активную топологию поиска. В командной строке Microsoft PowerShell введите следующие команды:
$ssa = Get-SPEnterpriseSearchServiceApplication $active = Get-SPEnterpriseSearchTopology -SearchApplication $ssa -Active $clone = New-SPEnterpriseSearchTopology -SearchApplication $ssa -Clone -SearchTopology $active
Эта команда создает клонированную топологию поиска, к которой можно обратиться по ссылке $clone, и возвращает сведения об этой топологии. Запишите идентификатор клонированной топологии на тот случай, если вам потребуется отменить процесс перераспределения разделов.
Добавьте новый раздел индекса, добавив один или несколько компонентов индекса и связав их с этим разделом. Мы рекомендуем создавать для нового раздела индекса такое же число реплик, которое имеется в существующих разделах. Для каждого нового компонента индекса в командной строке Windows PowerShell введите следующие команды:
New-SPEnterpriseSearchIndexComponent -SearchTopology $clone -SearchServiceInstance <host n> -IndexPartition <Index partition number>
Где:
$clone — клонированная топология, которую вы изменяете.
$<host n> — ссылка на объект PowerShell для экземпляра службы поиска.
<Index partition number> — номер создаваемого раздела индекса. По умолчанию имеется один раздел индекса — раздел индекса 0. Если вы хотите создать новый раздел индекса, введите для параметра IndexPartition значение 1, затем 2, затем 3 и так далее.
Например, если у вас есть существующий раздел индекса 0 с репликами на серверах Host A и Host B и вы хотите добавить новый раздел индекса с репликами на серверах Host C и Host D, выполните следующие команды:
New-SPEnterpriseSearchIndexComponent -SearchTopology $clone -SearchServiceInstance $hostC -IndexPartition 1 New-SPEnterpriseSearchIndexComponent -SearchTopology $clone -SearchServiceInstance $hostD -IndexPartition 1
Убедитесь, что приложение службы поиска запущено. В командной строке Microsoft PowerShell введите следующие команды:
$ssa.IsPaused() -ne 0
Если эта команда возвращает значение False, приложение службы поиска запущено. Перейдите к шагу 9.
Если эта команда возвращает значение True, приложение службы поиска приостановлено. Перейдите к шагу 8.
Если приложение службы поиска приостановлено, узнайте причину и определите, требуется ли дождаться завершения какой-либо операции до перехода к шагу 9. Дополнительные сведения см. в статье Управление приостановленным приложением службы поиска в SharePoint Server.
Запустите активацию клонированной топологии. При этом начнется активация топологии, включающей новые реплики индекса, связанные с новым разделом индекса. Дополнительно запустится процесс перераспределения разделов индекса.
Важно!
Приложение службы поиска приостанавливается во время перераспределения разделов индекса и не может выполнять обход или индексирование контента. Кроме того, пользователи не могут выполнять запросы. Вам будет недоступна консоль Windows PowerShell, в которой выполняется команда активации.
Примечание
На странице администрирования поиска в центре администрирования не показывается, что приложение службы поиска приостановлено для перераспределения разделов индекса. Однако поскольку все компоненты обработки запросов временно прекращают работу, когда вы приостанавливаете приложение службы поиска для перераспределения разделов, на странице администрирования поиска будут выводиться ошибки компонентов обработки запросов.
В командной строке Windows PowerShell введите следующие команды:
$ssa.PauseForIndexRepartitioning() Set-SPEnterpriseSearchTopology -Identity $clone
Пронаблюдайте за ходом перераспределения разделов индекса. Наблюдать за этим процессом можно только для основных компонентов индекса в существующей топологии. Далее показано, как найти эти компоненты.
Примечание
Вы не сможете выполнять никакие команды в существующей Командная консоль SharePoint, пока не завершится активация топологии, включая процесс перераспределения разделов индекса. Выполните следующие команды во второй командной консоли SharePoint 2013.
Запустите вторую командную консоль SharePoint 2013.
Найдите основную реплику индекса для каждого существующего раздела индекса. В командной строке Windows PowerShell второй командной консоли SharePoint 2013 введите следующие команды:
$ssa = Get-SPEnterpriseSearchServiceApplication Get-SPEnterpriseSearchStatus -SearchApplication $ssa -Text
Эта команда возвращает список компонентов индекса и их свойств. Запишите имена основных компонентов индекса. Это компоненты со свойством Primary: True.
Например, результат может выглядеть следующим образом. В этом примере основным компонентом индекса является IndexComponent2.
Name : IndexComponent1 State : Active Primary : False Partition : 0 Host : MyMachine1 Name : Cell:IndexComponent1-SPd32cdffb08a2I.0.0 State : Active Primary : False Partition : 0 Name : IndexComponent2 State : Active Primary : True Partition : 0 Host : MyMachine2 Name : Cell:IndexComponent2-SPd32cdffb08a2I.1.0 State : Active Primary : True Partition : 0
Для каждого основного компонента индекса пронаблюдайте за ходом перераспределения разделов индекса. В командной строке Windows PowerShell второй командной консоли SharePoint 2013 введите следующие команды:
Get-SPEnterpriseSearchStatus -SearchApplication $ssa -Healthreport -Component <Index component name> | ? { ($_.name -match "repart") -or ( $_.name -match "splitting") } | ft -AutoSize Name, Message
Где:
- <Index component name> — имя основного компонента индекса, за которым нужно пронаблюдать, например IndexComponent2.
Просмотрите результаты выполнения команды для каждого основного компонента индекса. В них содержатся сведения о ходе перераспределения разделов индекса.
На начальном этапе перераспределения разделов результаты будут выглядеть следующим образом.
Name Message ---- ------- repartition_component_state[SP...] Pending
Разделы индекса разбиваются на основном этапе перераспределения разделов. На этом этапе результаты будут выглядеть следующим образом.
Name Message ---- ------- index splitting: current fusion progress[SP...] <Percentage value> index splitting: splitting state [SP...] Index splitter running fusion, building: <Folder> repartition_component_state [SP...] Splitting
Процентное значение в результатах приблизительно показывает, какая часть процесса перераспределения разделов выполнена.
Повторяйте эту команду для всех основных компонентов индекса, пока она не перестанет возвращать значения. Это означает, что перераспределение разделов завершено и перераспределенный индекс теперь будет реплицирован и распространен на серверы. Это может занять несколько часов.
Пронаблюдайте за ходом распространения индекса в новые реплики индекса. Для этого убедитесь, что новая топология активна и все компоненты поиска работоспособны. В командной строке Windows PowerShell второй командной консоли SharePoint 2013 введите следующие команды:
Get-SPEnterpriseSearchStatus -SearchApplication $ssa | ft -AutoSize Name, State, Details
Во время распространения индекса в новые реплики добавленные реплики индекса будут возвращать состояние Деградация. Распространение индекса завершается тогда, когда все компоненты индекса возвращают состояние Активный. На это может потребоваться несколько часов.
Примечание
Компоненты обработки запросов временно перестают работать, так как вы приостановили приложение службы поиска для перераспределения разделов индекса. В выходных данных для компонентов обработки запросов будет указано состояние Неизвестно.
В Командная консоль SharePoint, в которой вы запустили процесс активации топологии, убедитесь, что команда активации топологии поиска выполнена.
(Необязательно) Перезапустите службу хоста-контроллера поиска SharePoint на всех серверах, где до перераспределения разделов размещались компоненты индекса (представляющие как основную, так и любую другую реплику индекса).
Выполните это действие, чтобы получить правильное число документов и освободить память после перераспределения разделов индекса поиска. Если вы решили не выполнять это действие, для постепенного сокращения объема используемой памяти и выравнивания счетчика документов (как возвращаемого командлетами PowerShell, так и отображаемого на странице администрирования поиска в центре администрирования) потребуется несколько дней и несколько итераций индексирования.
Примечание
Чтобы избежать перебоев в выполнении запросов, перед перезапуском службы хоста-контроллера поиска SharePoint убедитесь, что по крайней мере один компонент индекса возвращает состояние работает для каждого раздела индекса.
Важно!
Не используйте для перезапуска этой службы страницу "Службы на сервере" веб-сайта центра администрирования SharePoint Server.
Чтобы перезапустить хост-контроллер поиска SharePoint, откройте окно командной строки на каждом сервере, на котором размещены компоненты индекса для существующих разделов индекса.
Чтобы остановить хост-контроллер поиска SharePoint, введите следующую команду: net stop spsearchhostcontroller
Чтобы перезапустить хост-контроллер поиска SharePoint, введите следующую команду: net start spsearchhostcontroller
Запустите приложение службы поиска. В командной строке Windows PowerShell введите следующие команды:
$ssa.ResumeAfterIndexRepartitioning()
Отмена процесса перераспределения разделов
Если вам по какой-либо причине нужно отменить выполняющийся процесс перераспределения разделов, используйте следующую процедуру.
Отмена процесса перераспределения разделов
Запустите новую командную консоль SharePoint 2013 на сервере, на котором вы выполнили команду активации топологии.
Получите идентификатор активируемой топологии. В командной строке Windows PowerShell введите следующие команды:
$activating = Get-SPEnterpriseSearchTopology -Identity <Id of the activating topology> -SearchApplication $ssa
Где:
- <Id of the activating topology> — идентификатор (GUID) клонированной топологии, который вы записали при клонировании топологии поиска.
Отмените активацию топологии. В командной строке Windows PowerShell введите следующие команды:
$activating.CancelTopologyActivation()
Удаление компонента индекса
Если для раздела индекса имеется несколько активных реплик, вы можете удалить одну из них с помощью процедуры Удаление компонента поиска, описанной в статье Управление компонентами поиска в SharePoint Server.
С помощью этой процедуры вы не можете удалить последнюю реплику индекса для раздела. Если вам нужно удалить все реплики индекса из топологии поиска, то потребуется удалить и повторно создать приложение службы поиска, а затем создать совершенно новую топологию поиска с меньшим числом разделов индекса.
Перемещение компонента индекса
Если вы хотите переместить реплику индекса с одного сервера на другой, мы рекомендуем добавить новый компонент индекса в топологию поиска перед удалением старого.
Перемещение компонента индекса
Добавьте новый компонент индекса на сервер, на который вы хотите переместить реплику. Клонируйте топологию поиска, добавьте новую реплику индекса, подождите, пока индекс реплицируется в нее, и активируйте топологию поиска. См. раздел Добавление реплики индекса в существующий раздел индекса.
Подождите, пока новая реплика индекса будет готова обслуживать запросы. Чтобы просмотреть состояние топологии поиска, откройте страницу администрирования поиска в центре администрирования или выполните командлет Windows PowerShell
Get-SPEnterpriseSearchStatus
. Перед тем как продолжить, убедитесь, что добавленная реплика индекса имеет состояние Активный.Клонируйте топологию поиска еще раз.
Удалите лишнюю реплику индекса, удалив компонент индекса. См. процедуру Удаление компонента поиска в статье Управление компонентами поиска в SharePoint Server.
Повторно активируйте топологию поиска.
Это обеспечит отказоустойчивость индекса поиска в процессе перемещения реплики индекса.