asticsearch 1.1.1 JDBC речной плагин

{
  "type" : "jdbc",
  "jdbc" :{
    "strategy" : "oneshot",
    "index" : "exec_jdbc_index",
    "type" : "exec_jdbc_type",
    "driver" : "com.microsoft.sqlserver.jdbc.SQLServerDriver",
    "url" : "jdbc:sqlserver://host:1433;databaseName=MyDB",
    "user" : "user",
    "password" : "password",
    "sql":  "Exec MyProcName",        
    "callable" : true,            
    "fetchsize" : 1000        
   }
}

и я получаю следующее исключение:

Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: A result set was generated for update.

Пожалуйста, посоветуйте, как вызвать хранимый процесс из плагина JDBC River. Simple Select работает нормально.

Конечно, вот трассировка: [ОШИБКА][org.xbib.elasticsearch.river.jdbc.strategy.simple.SimpleRiverFlow] com.microsoft.sqlserver.jdbc.SQLServerException: для обновления был создан набор результатов. java.io.IOException: com.microsoft.sqlserver.jdbc.SQLServerException: набор результатов был создан для обновления. в org.xbib.elasticsearch.river.jdbc.strategy.simple.SimpleRiverSource.fetch(SimpleRiverSource.java:231) в org.xbib.elasticsearch.river.jdbc.strategy.simple.SimpleRiverFlow.move(SimpleRiverFlow.java:12) в org.xbib.elasticsearch.river.jdbc.strategy.simple.SimpleRiverFlow.run(SimpleRiverFlow.java:88) в java.lang.Thread.run(Thread.java:722). Причина: com.microsoft.sqlserver.jdbc.SQLServerException: набор результатов был сгенерирован для обновления. по адресу com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:171) по адресу com.microsoft.sqlserver.jdbc.SQLServerStatement.doExecuteStatement(SQLServerStatement.java:797) exSQLmserver.serm.doExecute(SQLServerStatement.java:676) в com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:4575) в com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConne00) atj.ava.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:179) по адресу com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:154) по адресу com.microsoft.sqmentServer.ate.Stever.exserver.js Java:633) в org.xbib.elasticsearch.river.jdbc.strategy.simple.SimpleRiverSource.executeUpdate(SimpleRiverSource.java:522) в org.xbib.elasticsearch.river.jdbc.strategy.simple.SimpleRiverSource. Java:260) в org.xbib.elasticsearch.river.jdbc.strategy.simple.SimpleRiverSource.fetch(SimpleRiverSource.java:227) ... еще 3

2 ответа

Хорошо, наконец выяснил, где проблема. Вызываемые заявления не были проанализированы как вызываемые.

Я модифицировал SimpleRiverSource Java-класс, метод fetch(), похоже, что даже вызываемый оператор собирался execute() или же executeWithParameter(command);, Я сделал простое изменение, чтобы позвонить executeCallable(command);прямо там, и он начал работать.

Возвращаете ли вы какой-либо "_id" из сохраненного набора результатов процесса? Я считаю, что _id необходим для индексирования, чтобы сохранить его уникальность. Попробуйте вернуть _id как часть набора результатов. Если это не поможет, не могли бы вы добавить еще одну часть трассировки стека, чтобы понять истинную причину.

Другие вопросы по тегам