Тип данных JDBC, Elasticsearch и Postgresql Json

  • Postgresql : 9.3.2
    • Elasticsearch : 0.90
    • jprante / elasticsearch-река-jdbc: 2.2.2
    • postgresql JDBC: 9.3-1100 JDBC 41

Я пытаюсь получить столбец типа данных postgresql Json в elasticsearch, используя реку elasticsearch.

Здесь сотворенная река

curl -XPUT 'localhost:9200/_river/business_river/_meta' -d '{
          "type" : "jdbc",
          "jdbc" : {
              "driver" : "org.postgresql.Driver",
              "url" : "jdbc:postgresql://localhost:5432/business",
              "user" : "postgres",
              "password" : "",
              "sql" : "select id, active, companies->'sic'->>'national_number' AS sic, companies->'names'->>'name' AS name, companies->'address'->>'country' AS country from businesses.business",
              "index" : "business",
              "type" : "jdbc"
     }
}'

Река жалуется, что столбца «имена» не существует !!! запрос работает в Postgresql, что наводит меня на мысль, что тип данных Json еще не поддерживается JDBC или рекой.

Здесь полное сообщение

[2014-01-13 07:47:27,919][INFO ][org.xbib.elasticsearch.river.jdbc.JDBCRiver] [Brigade] [jdbc][business_river] starting JDBC river: URL [jdbc:postgresql://localhost:5432/business], driver [org.postgresql.Driver], strategy [oneshot], index [jdbc]/[jdbc]
[2014-01-13 07:47:33,281][ERROR][org.xbib.elasticsearch.river.jdbc.strategy.simple.SimpleRiverFlow] ERROR: column "names" does not exist
  Position: 31
org.postgresql.util.PSQLException: ERROR: column "names" does not exist
  Position: 31
        at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2161)
        at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1890)
        at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:255)                                                                                         
        at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:560)                                                                                 
        at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:403)                                                                        
        at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:283)                                                                            
        at org.xbib.elasticsearch.river.jdbc.strategy.simple.SimpleRiverSource.executeQuery(SimpleRiverSource.java:417)                                                         
        at org.xbib.elasticsearch.river.jdbc.strategy.simple.SimpleRiverSource.fetch(SimpleRiverSource.java:241)                                                                
        at org.xbib.elasticsearch.river.jdbc.strategy.simple.SimpleRiverFlow.move(SimpleRiverFlow.java:184)                                                                     
        at org.xbib.elasticsearch.river.jdbc.strategy.oneshot.OneShotRiverFlow.run(OneShotRiverFlow.java:38)                                                                    
        at java.lang.Thread.run(Thread.java:744)

person Sebastien Deschamps    schedule 12.01.2014    source источник
comment
Показать: сообщение об ошибке EXACT и внутренний SQL, который создал его из файлов журнала PostgreSQL. Кроме того, я не думаю, что это причина, но ваше цитирование неверно. Посмотрите, как SO подсвечивает ваш ввод curl синтаксисом. Смотрите companies->'sic'? Ну, sic - это текст без кавычек. Это не имеет значения, поскольку метасимволы оболочки отсутствуют.   -  person Craig Ringer    schedule 13.01.2014
comment
Напишите решение в области ответов и отметьте его, чтобы его можно было считать ответом.   -  person eliasah    schedule 04.06.2014
comment
@sdeschamps - переместите редактирование решения в ответ и отметьте его принятым.   -  person Andy    schedule 18.06.2014
comment
Обратите внимание, что Rivers устарели, начиная с elasticsearch v1.5, и будут полностью удалены в 2.0.   -  person Damian    schedule 05.10.2015


Ответы (1)


Благодаря Крейгу Рингеру, который указал мне на настоящую проблему, я переписал свою реку, заменив простые кавычки в запросе postgresql json на «\ u0027», и теперь он отлично работает.

person Sebastien Deschamps    schedule 24.06.2014