XDELETE не удаляет индекс в ElasticSearch

#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/" )