Используйте Powershell для удаления ядер Solr, начинающихся с префикса

Есть ли способ использовать Powershell 2.0 для автоматического удаления ядер Solr, начинающихся с заданного префикса? Например, я хотел бы удалить все ядра, которые начинаются с «some_prefix». Я использую Solr 4.10.1 и хочу удалить ядра с помощью следующего вызова API:

http://localhost:8983/solr/admin/cores?action=UNLOAD&deleteIndex=true&deleteInstanceDir=true&core=some_prefix_etc

person Dan Solovay    schedule 08.10.2016    source источник


Ответы (1)


Этот скрипт будет работать:

param ($prefix = $(throw "-prefix is required"))

$client = (New-Object System.Net.WebClient)
[xml]$coresXML = $client.DownloadString("http://localhost:8983/solr/admin/cores")
$cores = $coresXML.response.lst[2].lst | % {$_.name}
$success = 0
$error = 0

foreach ($core in $cores) {
  if ($core.StartsWith($prefix)) {
    $url = "http://localhost:8983/solr/admin/cores?action=UNLOAD&deleteIndex=true&deleteInstanceDir=true&core=$core"
    write-host "Deleting $core :"
    $client.DownloadString($url)
    if ($?) {$success++}
    else $error++
  }
}
write-host "Deleted $success cores.  Had $error errors."

См. это о том, как работает синтаксис для извлечения ядер в список, и this в параметрах Solr UNLOAD API для удаления ядра.

person Dan Solovay    schedule 08.10.2016