#powershell #elasticsearch
#powershell #elasticsearch
Вопрос:
Я создал два файла, которые,
jdbc_sqlserver.json
:
{
"type": "jdbc",
"jdbc": {
"url": "jdbc:sqlserver://localhost:1433;databaseName=merchant2merchant;integratedSecurity=true;",
"user": "",
"password": "",
"sql": "select * from planets",
"treat_binary_as_string": true,
"elasticsearch": {
"cluster": "elasticsearch",
"host": "localhost",
"port": 9200
},
"index": "testing"
}
jdb_sqlserver.ps1
:
function Get-PSVersion {
if (Test-Path variable:PSVersionTable) {
$PSVersionTable.PSVersion
} else {
[version]"1.0.0.0"
}
}
$powershell = Get-PSVersion
if ($powershell.Major -le 2) {
Write-Error "Oh, so sorry, this script requires Powershell 3 (due to ConvertTo-Json)"
exit
}
if ((Test-Path env:JAVA_HOME) -eq $false) {
Write-Error "Environment variable JAVA_HOME must be set to your java home"
exit
}
curl -XDELETE "http://localhost:9200/users/"
$DIR = "C:Program Fileselasticsearchpluginselasticsearch-jdbc-2.3.4.0-distelasticsearch-jdbc-2.3.4.0"
$FEEDER_CLASSPATH = "$DIRlib"
$FEEDER_LOGGER = "file://$DIRbinlog4j2.xml"
java -cp "$FEEDER_CLASSPATH*" -Dlog4j.configurationFile=$FEEDER_LOGGER"
"org.xbib.tools.Runner"
"org.xbib.tools.JDBCImporter"
jdbc_sqlserver.json
Меня смущает, что в ElasticSearch XDELETE используется для удаления индекса при создании индекса.
Комментарии:
1. Это
-X DELETE
, неXDELETE
(т. Е. вызывающий метод HTTP DELETE ). Вы на самом деле используетеcurl
, или вы используетеcurl
псевдоним дляInvoke-WebRequest
? Вы получаете сообщение об ошибке? Можете ли вы описать фактический, а также желаемый результат более подробно?2. На самом деле я не получаю ошибку ….. после получения подтверждения ответа: True я проверяю браузер, обновляя localhost: 9200: / testing в первый раз, когда он показывает, что индекс был удален, но обновляя его снова, тот же индекс появляется снова, если я проверяю localhost: 9200 / _cat / indexes?v в браузере .. это действительно раздражает меня
3. Я использую Powershell для запуска команды curl, в которой я импортирую данные sql с помощью jdbc importer через MSSQL… Еще одна вещь, которую я проверяю, похожа на elasticsearch elastic.co/guide/en/elasticsearch/reference/2.3 / … он показывает мне curl -XDELETE, а не -X DELETE …. Пожалуйста, предложите.. Ваша помощь будет оценена
Ответ №1:
Я также сначала попытался получить копируемый фрагмент-curl-commands изelastic.co для работы в PowerShell (в версии 4). В PowerShell есть псевдоним для curl (как обсуждалось здесь), но он, похоже, не соответствует тому синтаксису, который используется.
Поэтому, на мой взгляд, лучше вообще преобразовать curl
-вызовы в Invoke-WebRequest
-calls.
Чтобы удалить индекс с помощью PowerShell, просто используйте эту команду
Invoke-WebRequest -Uri 'http://localhost:9200/users/' -Method Delete
(переведено с curl -XDELETE "http://localhost:9200/users/"
)