And, if the name is not correct, creating ElasticsearchSchema will be failed. The program will not performs "ResultSet result = ss.excuteQuery(sql);"
At 2019-04-03 09:47:02, "Andrei Sereda" <and...@sereda.cc> wrote: >Can you check that it's not because of lex ? >What if you quote table name "test" ? Maybe uppercase ? > >On Tue, Apr 2, 2019, 22:42 Maria <linanmengxia...@126.com> wrote: > >> Firstly,thanks for your reply. >> But I'm sure that my local elasticsearch-model.json has been loaded >> correctly,because when getting connect,read the elastic info from that >> file. >> I will debug the test-demo again...Search for the cause of the problem. >> >> >> Best wishes. >> >> >> Maria. >> At 2019-04-02 19:54:24, "Yuzhao Chen" <yuzhao....@gmail.com> wrote: >> >For Object 'test' not found it means Calcite does not load your son model >> correctly, so it can not find then validate the table there. Maybe you >> model file is not load correctly. >> > >> >I saw a demo in Calcite code in [1], the path sep is </> while your sep >> is <\\>, can you have a try ? >> > >> >[1] >> https://github.com/apache/calcite/blob/a75a689eff2f1333adc8fb800bdfa077e94da562/core/src/test/java/org/apache/calcite/test/LatticeTest.java#L914 >> > >> >Best, >> >Danny Chan >> >在 2019年4月2日 +0800 PM8:33,Maria <linanmengxia...@126.com>,写道: >> >> Hi, calcite developers. I met a question about es-adapter and still >> cannot resove it: . >> >> >> >> >> >> 1) calcite version :1.18.0 >> >> 2) ES version : 5.4.1(I know that in calcite-1.18.0 is 6.4.2) >> >> 3) test sql : select count(*) from test >> >> 4) elasticsearch-model.json as follow: >> >> { >> >> "version": "1.0","defaultSchema": "elasticsearch", "schemas": [ { >> "type": "custom", "name": "test", "factory": >> "org.apache.calcite.adapter.elasticsearch.ElasticsearchSchemaFactory", >> "operand": { >> >> "coordinates": "{'xx.xx.xx.xx': 9205}", >> >> "userConfig": "{'bulk.flush.max.actions': 10, 'bulk.flush.max.size.mb': >> 1}", >> >> "index": "test" } } ] } >> >> 5) test-code: >> >> try { >> >> Class.forName("org.apache.calcite.jdbc.Driver"); >> >> } catch (ClassNotFoundException e) { >> >> Throw new RuntimeException(e); >> >> } >> >> Properties pp = new Properties(); >> >> pp.put("lex", "JAVA"); >> >> Connection conn = null; >> >> try { >> >> conn = >> DriverManager.getConnection("jdbc:calcite:model=D:\\calcite\\pre-git\\calcite-test\\conf\\elasticsearch-model.json", >> pp); >> >> Statement ss = conn.createStatement(); >> >> String sql = "select count(*) from test"; >> >> ResultSet result = ss.escuteQuery(sql); >> >> output(resultSet, System.out); >> >> } catch() { >> >> Throw new RuntimeException("======get data failed" , e); >> >> } >> >> >> >> >> >> 6) excaptions : >> >> org.apache.calcite.sql.validate.SqlValidatorException:Object 'test' not >> found >> >> Exception in thread "main" java.lang.RuntimeException: ======get data >> failed >> >> ......... >> >> caused by:org.apache.calcite.runtime.CalciteContestException: From line >> 1, column 22 to line 1, column 25: Object 'test' not found<4 internal calls> >> >> at >> org.apache.calcite.runtime.Resources$ExInstWithCause.ex(Resources.java:463) >> >> at org.apache.calcite.sql.SqlUtil.newContextException(SqlUtil.java:787) >> >> at org.apache.calcite.sql.SqlUtil.newContextException(SqlUtil.java:772) >> >> at >> org.apache.calcite.sql.validate.SqlValidatorImpl.newValidationError(SqlValidatorImpl.java:4788) >> >> at >> org.apache.calcite.sql.validate.IdentifierNamespace.resolveImpl(IdentifierNamespace.java:172) >> >> ......... >> >> 7) other confusions: >> >> [1] I know that in elasticsearch apdator, test case is done by >> EmbeddedElasticsearch, why not add one standard JDBC test case? >> >> [2] model.json in >> http://calcite.apache.org/docs/elasticsearch_adapter.html need to be >> update,should add "userConfig", or else will be failed. >> >> >> >> >> >> >> >> >> >> any reply will be appreciated >> >> >> >> >> >> Maria. >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >>