Управление компонентом индекса в SharePoint Server

ОБЛАСТЬ ПРИМЕНЕНИЯ:yes-img-132013 yes-img-162016 yes-img-192019 yes-img-seSubscription Edition no-img-sopSharePoint в Microsoft 365

Процедуры и примеры в этой статье предполагают, что 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 можно выполнять на любом сервере фермы. Однако в этой процедуре следует использовать одну и ту же командную консоль SharePoint для всех команд Microsoft PowerShell, чтобы можно было совместно использовать ссылки на объекты Microsoft PowerShell между командами.

Добавление реплики индекса

  1. Убедитесь, что учетная запись пользователя, с помощью которой выполняется данная процедура, является участником группы администраторов фермы.

  2. Запустите командную консоль Командная консоль SharePoint на одном из серверов в ферме.

  3. Запустите экземпляр службы поиска на сервере, на котором вы хотите создать реплику индекса, и создайте ссылку на идентификатор экземпляра службы поиска. В командной строке Microsoft PowerShell введите следующие команды.

    $<host n > = Get-SPEnterpriseSearchServiceInstance -Identity "<Server name>"
    Start-SPEnterpriseSearchServiceInstance -Identity $<host n >
    

    Где:

    • $<host n> указывает ссылку на объект PowerShell для экземпляра службы поиска.

    • <Имя> сервера указывает сервер, на котором требуется добавить компонент индекса. Входные данные должны быть допустимым идентификатором GUID в формате 12345678-90ab-cdef-1234-567890bcdefgh; допустимым именем сервера (например, myserver1 ); или экземпляром допустимого объекта SearchServiceInstance .

    Например:

    $hostA = Get-SPEnterpriseSearchServiceInstance -Identity "myserver1"
    Start-SPEnterpriseSearchServiceInstance -Identity $hostA
    
  4. Подождите, пока запустится экземпляр службы поиска. В командной строке Microsoft PowerShell введите следующую команду, пока команда не вернет состояние Online:

    Get-SPEnterpriseSearchServiceInstance -Identity $<host n >
    
  5. Клонируйте активную топологию поиска. В командной строке Microsoft PowerShell введите следующие команды:

    $ssa = Get-SPEnterpriseSearchServiceApplication
    $active = Get-SPEnterpriseSearchTopology -SearchApplication $ssa -Active
    $clone = New-SPEnterpriseSearchTopology -SearchApplication $ssa -Clone -SearchTopology $active
    
  6. Добавьте новый компонент индекса и свяжите его с разделом. В командной строке Windows PowerShell введите следующие команды:

    New-SPEnterpriseSearchIndexComponent -SearchTopology $clone -SearchServiceInstance <host n > -IndexPartition <Index partition number>
    

    Где:

    • $clone клонированная топология, которую вы изменяете.

    • $<host n> — это ссылка на объект PowerShell на запущенный экземпляр службы поиска на сервере, на который нужно добавить реплику индекса.

    • <Номер> секции индекса — это номер существующей секции индекса, для которую создается реплика. Например, чтобы создать реплику раздела индекса 0, задайте для этого параметра значение 0.

    Примеры:

    New-SPEnterpriseSearchIndexComponent -SearchTopology $clone -SearchServiceInstance $hostA -IndexPartition 0
    
  7. Активируйте клонированную топологию. В командной строке Microsoft PowerShell введите следующие команды:

    Set-SPEnterpriseSearchTopology -Identity $clone
    
  8. Убедитесь, что новая топология активна и что компонент индекса, представляющий новую реплику индекса, добавлен. В командной строке Microsoft PowerShell введите следующие команды:

    Get-SPEnterpriseSearchTopology -Active -SearchApplication $ssa
    
  9. Пронаблюдайте за распространением существующего индекса в новую реплику. Добавленная реплика индекса будет иметь состояние Деградация до тех пор, пока распространение не завершится. В командной строке Microsoft PowerShell введите следующие команды:

    Get-SPEnterpriseSearchStatus -SearchApplication $ssa -Text
    

    Повторяйте эту команду, пока все компоненты поиска, включая новый компонент индекса, не сообщат состояние Активный. Для большого индекса поиска на это может потребоваться несколько часов.

Добавление нового раздела индекса

При добавлении нового раздела необходимо выполнить перераспределение разделов индекса поиска. В зависимости от размера индекса поиска этот процесс может занять несколько часов.

Чтобы добавить секцию индекса и повторно разделить индекс поиска, необходимо добавить новый компонент индекса в топологию поиска и связать этот компонент индекса с новым номером секции индекса. Добавление секции индекса и повторное секционирование индекса поиска должно инициироваться как отдельный процесс и не должно инициироваться при внесении других изменений в топологию поиска.

Вам следует добавить в новый раздел индекса такое же число реплик, которое имеется в существующих разделах.

Перед добавлением нового раздела индекса в топологию поиска и перераспределением разделов индекса поиска выполните следующие действия.

  • Создайте резервную копию приложения служба и существующего индекса поиска. См. статью Резервное копирование приложений служба в SharePoint Server.

  • Убедитесь, что текущая активная топология функционирует. Просмотрите состояние топологии поиска на странице Администрирование поиска в центре администрирования или выполните командлет Get-SPEnterpriseSearchStatusMicrosoft PowerShell .

  • Убедитесь, что на том сервере, на который вы будете добавлять раздел индекса, достаточно дискового пространства.

Предостережение

Приложение службы поиска приостанавливается во время перераспределения разделов индекса и не может выполнять обход или индексирование контента. Кроме того, пользователи не могут выполнять запросы.

Добавление раздела индекса

  1. Убедитесь, что учетная запись пользователя, с помощью которой выполняется данная процедура, является участником группы администраторов фермы.

  2. Запустите командную консоль Командная консоль SharePoint на одном из серверов в ферме.

  3. Запустите экземпляр службы поиска на всех серверах, где нужно добавить реплику индекса для новой секции индекса. Вы создаете ссылку на объект PowerShell для экземпляра службы поиска, который будет использоваться далее в процедуре. Для каждого сервера в командной строке Microsoft PowerShell введите следующие команды:

    $<host n > = Get-SPEnterpriseSearchServiceInstance -Identity "<Server name>"
    Start-SPEnterpriseSearchServiceInstance -Identity $<host n >
    

    Здесь:

    • <host n> ссылка на объект PowerShell для экземпляра службы поиска.

    • <Имя> сервера указывает сервер, на котором требуется добавить компонент индекса. Входные данные должны быть допустимым идентификатором 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
    
  4. Подождите, пока запустятся экземпляры службы поиска. Для каждого сервера в командной строке Microsoft PowerShell введите следующую команду, пока команда не вернет состояние в сети:

    Get-SPEnterpriseSearchServiceInstance -Identity $<host n >
    
  5. Клонируйте активную топологию поиска. В командной строке Microsoft PowerShell введите следующие команды:

    $ssa = Get-SPEnterpriseSearchServiceApplication
    $active = Get-SPEnterpriseSearchTopology -SearchApplication $ssa -Active
    $clone = New-SPEnterpriseSearchTopology -SearchApplication $ssa -Clone -SearchTopology $active
    

    Эта команда создает клонированную топологию поиска, к которой можно обратиться по ссылке $clone, и возвращает сведения об этой топологии. Запишите идентификатор клонированной топологии на тот случай, если вам потребуется отменить процесс перераспределения разделов.

  6. Добавьте новый раздел индекса, добавив один или несколько компонентов индекса и связав их с этим разделом. Мы рекомендуем создавать для нового раздела индекса такое же число реплик, которое имеется в существующих разделах. Для каждого нового компонента индекса в командной строке Windows PowerShell введите следующие команды:

    New-SPEnterpriseSearchIndexComponent -SearchTopology $clone -SearchServiceInstance <host n > -IndexPartition <Index partition number>
    

    Где:

    • $clone клонированная топология, которую вы изменяете.

    • $<host n> указывает ссылку на объект PowerShell для экземпляра службы поиска.

    • <Номер> секции индекса — это номер создаваемой секции индекса. По умолчанию имеется один раздел индекса — раздел индекса 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
    
  7. Убедитесь, что приложение службы поиска запущено. В командной строке Microsoft PowerShell введите следующие команды:

    $ssa.IsPaused() -ne 0
    
    • Если эта команда возвращает значение False, приложение службы поиска запущено. Перейдите к шагу 9.

    • Если эта команда возвращает значение True, приложение службы поиска приостановлено. Перейдите к шагу 8.

  8. Если приложение службы поиска приостановлено, узнайте причину и определите, требуется ли дождаться завершения какой-либо операции до перехода к шагу 9. Дополнительные сведения см. в статье Управление приостановленным приложением служба в SharePoint Server.

  9. Запустите активацию клонированной топологии. При этом начнется активация топологии, включающей новые реплики индекса, связанные с новым разделом индекса. Дополнительно запустится процесс перераспределения разделов индекса.

    Важно!

    Приложение службы поиска приостанавливается во время перераспределения разделов индекса и не может выполнять обход или индексирование контента. Кроме того, пользователи не могут выполнять запросы. Вам будет недоступна консоль Windows PowerShell, в которой выполняется команда активации.

    Примечание.

    На странице администрирования поиска в центре администрирования не показывается, что приложение службы поиска приостановлено для перераспределения разделов индекса. Однако поскольку все компоненты обработки запросов временно прекращают работу, когда вы приостанавливаете приложение службы поиска для перераспределения разделов, на странице администрирования поиска будут выводиться ошибки компонентов обработки запросов.

    В командной строке Windows PowerShell введите следующие команды:

    $ssa.PauseForIndexRepartitioning()
    Set-SPEnterpriseSearchTopology -Identity $clone
    
  10. Пронаблюдайте за ходом перераспределения разделов индекса. Наблюдать за этим процессом можно только для основных компонентов индекса в существующей топологии. Далее показано, как найти эти компоненты.

    Примечание.

    Вы не сможете выполнять какие-либо команды в существующей командной консоли SharePoint, пока не завершится активация топологии, включая процесс повторного секционирования индекса. Выполните следующие команды во второй командной консоли SharePoint.

    • Запустите второй сеанс командной консоли SharePoint.

    • Найдите основную реплику индекса для каждого существующего раздела индекса. В командной строке Windows PowerShell второй командной консоли SharePoint введите следующие команды:

    $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
    
  11. Для каждого основного компонента индекса пронаблюдайте за ходом перераспределения разделов индекса. В командной строке Windows PowerShell второй командной консоли SharePoint введите следующие команды:

    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
    

    Процентное значение в результатах приблизительно показывает, какая часть процесса перераспределения разделов выполнена.

    Повторяйте эту команду для всех основных компонентов индекса, пока она не перестанет возвращать значения. Это означает, что перераспределение разделов завершено и перераспределенный индекс теперь будет реплицирован и распространен на серверы. Это может занять несколько часов.

  12. Пронаблюдайте за ходом распространения индекса в новые реплики индекса. Для этого убедитесь, что новая топология активна и все компоненты поиска работоспособны. В командной строке Windows PowerShell второй командной консоли SharePoint введите следующие команды:

    Get-SPEnterpriseSearchStatus -SearchApplication $ssa | ft -AutoSize Name, State, Details
    

    Во время распространения индекса в новые реплики добавленные реплики индекса будут возвращать состояние Деградация. Распространение индекса завершается тогда, когда все компоненты индекса возвращают состояние Активный. На это может потребоваться несколько часов.

    Примечание.

    Компоненты обработки запросов временно перестают работать, так как вы приостановили приложение службы поиска для перераспределения разделов индекса. В выходных данных для компонентов обработки запросов будет указано состояние Неизвестно.

  13. В командной консоли SharePoint, где вы запустили процесс активации топологии, убедитесь, что команда активации топологии поиска выполнена.

  14. (Необязательно) Перезапустите службу хоста-контроллера поиска SharePoint на всех серверах, где до перераспределения разделов размещались компоненты индекса (представляющие как основную, так и любую другую реплику индекса).

    Выполните это действие, чтобы получить правильное число документов и освободить память после перераспределения разделов индекса поиска. Если вы решили не выполнять это действие, для постепенного сокращения объема используемой памяти и выравнивания счетчика документов (как возвращаемого командлетами PowerShell, так и отображаемого на странице администрирования поиска в центре администрирования) потребуется несколько дней и несколько итераций индексирования.

    Примечание.

    Чтобы избежать перебоев в выполнении запросов, перед перезапуском службы хоста-контроллера поиска SharePoint убедитесь, что по крайней мере один компонент индекса возвращает состояние работает для каждого раздела индекса.

    Важно!

    Не используйте для перезапуска этой службы страницу "Службы на сервере" веб-сайта центра администрирования SharePoint Server.

    • Чтобы перезапустить хост-контроллер поиска SharePoint, откройте окно командной строки на каждом сервере, на котором размещены компоненты индекса для существующих разделов индекса.

    • Чтобы остановить хост-контроллер поиска SharePoint, введите следующую команду: net stop spsearchhostcontroller

    • Чтобы перезапустить хост-контроллер поиска SharePoint, введите следующую команду: net start spsearchhostcontroller

  15. Запустите приложение службы поиска. В командной строке Windows PowerShell введите следующие команды:

    $ssa.ResumeAfterIndexRepartitioning()
    

Отмена процесса перераспределения разделов

Если вам нужно отменить выполняющийся процесс перераспределения разделов, используйте описанную ниже процедуру.

Отмена процесса перераспределения разделов

  1. Запустите новую командную консоль SharePoint 2013 на сервере, на котором вы выполнили команду активации топологии.

  2. Получите идентификатор активируемой топологии. В командной строке Windows PowerShell введите следующие команды:

    $activating = Get-SPEnterpriseSearchTopology -Identity <Id of the activating topology> -SearchApplication $ssa
    

    Где:

    • <Id of the activating topology> идентификатор (GUID) клонированной топологии, который вы записали при клонировании топологии поиска.
  3. Отмените активацию топологии. В командной строке Windows PowerShell введите следующие команды:

    $activating.CancelTopologyActivation()
    

Удаление компонента индекса

Если для раздела индекса имеется несколько активных реплик, вы можете удалить одну из них с помощью процедуры Удаление компонента поиска, описанной в статье Управление компонентами поиска в SharePoint Server.

С помощью этой процедуры вы не можете удалить последнюю реплику индекса для раздела. Если вам нужно удалить все реплики индекса из топологии поиска, то потребуется удалить и повторно создать приложение службы поиска, а затем создать совершенно новую топологию поиска с меньшим числом разделов индекса.

Перемещение компонента индекса

Если вы хотите переместить реплику индекса с одного сервера на другой, мы рекомендуем добавить новый компонент индекса в топологию поиска перед удалением старого.

Перемещение компонента индекса

  1. Добавьте новый компонент индекса на сервер, на который нужно переместить реплику индекса. Клонируйте топологию поиска, добавьте новую реплику индекса, дождитесь репликации индекса в новую реплику индекса и активируйте топологию поиска. См . раздел Добавление реплики индекса в существующую секцию индекса.

  2. Подождите, пока новая реплика индекса будет готова обслуживать запросы. Просмотрите состояние топологии поиска на странице Администрирование поиска в центре администрирования или выполните командлет Get-SPEnterpriseSearchStatusWindows PowerShell . Перед тем как продолжить, убедитесь, что добавленная реплика индекса имеет состояние Активный.

  3. Клонируйте топологию поиска еще раз.

  4. Удалите излишную реплику индекса, удалив компонент индекса. См. процедуру Удаление компонента поиска в статье Управление компонентами поиска в SharePoint Server.

  5. Повторно активируйте топологию поиска.

Это обеспечит отказоустойчивость индекса поиска в процессе перемещения реплики индекса.