APACHE CALCITE | выполнить операцию поиска наasticSearch, используя RelNode - PullRequest
0 голосов
/ 30 мая 2019

Я хочу выполнить операцию поиска в Elasticsearch, используя RelNode объекты, а не традиционный метод SQL-запроса.

Я пытался создать RelNode объекты, предоставляя проекции и фильтры, но это не сработало, говоряполя ввода не найдены.

   SchemaPlus postschema = con.getRootSchema().getSubSchema("twitter2");

    FrameworkConfig postConfig = Frameworks.newConfigBuilder()
            .defaultSchema(postschema)
            .build();
    RelBuilder postBuilder = RelBuilder.create(postConfig);

   RelNode relSelect = postBuilder.scan("user").project(testBuilder.scan("user").field("name)).build();

Я использовал следующую схему:

+ "{
"
                    + "  version: '1.0',
"
                    + "  defaultSchema: 'BASEJDBC',
"
                    + "  schemas: [
"
                    + "     {
"
                    + "       type: 'custom',
"
                    + "       name: 'twitter2',
"
                    + "       factory: '" + "org.apache.calcite.adapter.elasticsearch.ElasticsearchSchemaFactory" + "',
"
                    + "       operand:  { 
"
                    + "         "coordinates": " + " "{'localhost': 9200}",
 "
                    + "         "userConfig": " + " "{'admin': 'admin'}",
 "
                    + "         "index":  "twitter2" 
"
                    + "       }
"
                    + "     },
"

Я могу выбрать правильный набор результатов, используя следующие объекты RexNode в фильтре:

   final RexNode condition1 =
            rexbuilder.makeCall(SqlStdOperatorTable.EQUALS,
                            rexbuilder.makeCall(SqlStdOperatorTable.ITEM,rexbuilder.makeInputRef(relDataTypeFactory.createSqlType(SqlTypeName.ANY), 0),
                                    rexbuilder.makeLiteral("_id"))
                    ,
                    rexbuilder.makeLiteral("ss")
            );



 RelNode node = postBuilder.scan("user")
          .filter(condition1)
            //.project()
            .build();

Я все еще не могу создавать проекции объектов RelNode.Это стандартный способ создания фильтрующих объектов RelNode ???

Не могли бы вы предоставить подробности при просмотре и как использовать его для построения запросов ??

...