当前位置: 首页 > 面试题库 >

JDBC,Elasticsearch和Postgresql Json数据类型

周通
2023-03-14
问题内容
  • PostgreSQL:9.3.2
    • Elasticsearch:0.90
    • jprante / elasticsearch-river-jdbc:2.2.2
    • PostgreSQL JDBC:9.3-1100 JDBC 41

我正在尝试使用elasticsearch river将一个postgresql Json数据类型列放入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中工作,这使我认为JDBC或river不支持Json数据类型。

这是完整的消息

[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)

问题答案:

感谢克雷格·林格(Craig Ringer)向我指出了真正的问题,我改写了我的河,用“ \ u0027”替换了PostgreSQL
json查询中的简单引号,现在一切正常



 类似资料:
  • 主要内容:日期和时间数据类型,处理NULL值JDBC驱动程序将Java数据类型转换为适当的JDBC类型,然后将其发送到数据库。 它为大多数数据类型提供并使用默认映射。 例如,Java 类型会被转换为SQL 。 创建默认映射以提供到驱动程序时保持一致性。 下表总结了当调用或对象或方法的方法时,将Java数据类型转换为的默认JDBC数据类型。 SQL类型 JDBC/Java类型 setXXX updateXXX VARCHAR java.lan

  • 我试图使用Spring数据Elasticsearch连接到Elasticsearch 5。 根据链接-https://github.com/spring-projects/spring-data-elasticsearch,spring数据弹性搜索-3.0.0。M4与Elasticsearch 5.4.0兼容 但我在尝试连接Elasticsearch时出现以下错误 请告诉我,如果你们中的任何一个人

  • 请帮助解决此错误... 因为我在该对象上使用了bigdecimal类型,而没有添加一个操作@字段(type=FieldType.Double) 有没有办法配置默认的FieldType。大十进制加倍?或者我们需要在每个大十进制中添加字段注释

  • 问题内容: 当使用各种JDBC模板方法之一时,我对如何迭代/滚动大结果集(不适合内存)感到困惑。即使没有直接公开Iterable接口,我至少也希望RowQuerybackHandler实例在查询执行后( 而 不是在堆溢出之后)执行时被调用。 我也有在看一个这个(这什么都没有改变,我尽管是在精神上类似这个帖子上的堆栈溢出),并在该岗位在spring论坛。后者似乎暗示在游标获取数据时确实应该调用回调处

  • 本文向大家介绍详解jdbc实现对CLOB和BLOB数据类型的操作,包括了详解jdbc实现对CLOB和BLOB数据类型的操作的使用技巧和注意事项,需要的朋友参考一下 详解jdbc实现对CLOB和BLOB数据类型的操作 1、 读取操作 CLOB  BLOB 2、写入操作 CLOB BLOB 3、读写CLOB/BLOB数据到文件 TNS: Table: 测试代码: 注:如果是具体的字符串写入CLOB字段

  • 我知道Kafka JDBC接收器连接器对于数组数据类型有一些缺点。然而,是否有可能将接收器连接器与一个简单的Kafka连接器结合起来,该连接器可以支持数组数据类型。如何从Kafka配置中筛选并切换到简单的Kafka连接器配置简单的Kafka配置意味着什么?Kafka如何连接支持阵列字段 这是否可能,因为它将作为字符串而不是数组消耗给db