私はアプリケーションにElastic Search 1.7バージョンを使用しており、riverの概念を使用して、次の記事を使用してSQL ServerからElasticSearchにデータを入力していました: https://www.pluralsight.com/blog/it -ops/elasticsearch-and-sql-server
URL: POST http://localhost:9200/_river/my_jdbc_river/_meta
JSON:
{
"type":"jdbc",
"schedule" : "0 0-59 0-23 ? * *",
"jdbc": {
"driver":"com.Microsoft.sqlserver.jdbc.SQLServerDriver",
"url":"jdbc:sqlserver://127.0.0.1:1433;databaseName=MyDatabase",
"user":"my_db_user","password":"password",
"sql":"select ID as _id, FirstName, LastName, DateOfBirth from People",
"index":"people",
"type":"person"
}
}
しかし、Elastic Search 2.0のドキュメントでは、川は廃止されていると記載されています。ElasticSearch 2.0を使用してSQL ServerからElasticにデータをコピーするより良い方法はありますか?
代替のコードサンプルは本当に役に立ちます
ありがとう
編集:これは、廃止予定のリバーなしでSQL ServerからElasticSearchにデータを同期するために、私が段階的に行ったことです。一からやりました。すでに川を設定している場合は、これらの手順のいくつかをすでに行っている可能性があります。
{ "type":"jdbc",
"jdbc":{
"url":"jdbc:sqlserver://localhost:1433;databaseName=test",
"user":"test",
"password":"test",
"sql":"SELECT id as _id, id, name,email FROM test",
"index":"users",
"type":"user",
"autocommit":"true"
}
}
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/planets"
$DIR = "D:\programs\elasticsearch\plugins\elasticsearch-jdbc-1.7.0.1\"
$FEEDER_CLASSPATH="$DIR\lib"
$FEEDER_LOGGER="file://$DIR\bin\log4j2.xml"
Java -cp "$FEEDER_CLASSPATH\*" -"Dlog4j.configurationFile=$FEEDER_LOGGER" "org.xbib.tools.Runner" "org.xbib.tools.JDBCImporter" jdbc_sqlserver.json
この記事は非常に役に立ちました: http://r2d2.cc/2015/08/05/elastic-search-on-windows-with-mysql-sql-server-2014-and-import-feeder/ =
このための計画は、レコードをSQLに書き込むときです。次に、主キーを取得してキューシステムに入れます(この場合はRabbitMQ)。次に、SQLからデータを抽出してESに挿入するコンシューマー(または多くのコンシューマー)があります。
中間キューがあると、いくつかの利点があります。
今この投稿を参照している場合(私のように)、ElasticSearchは先に進んでおり、これに使用されているスプリングブートクライアントとの互換性の問題があり、ES 5.x.xをサポートしていません。そのため、互換性のある独自のスプリングブートクライアントを作成する必要があります。ESがサポートを提供するのを待つ/ ESにSQL Serverをブリッジする代替ソリューションを使用する必要があります。