gpt4 book ai didi

elasticsearch - 行类型为_MAP时,从表中选择方解石选择计数(intCol)(elasticsearch示例)

转载 作者:行者123 更新时间:2023-12-02 23:56:36 25 4
gpt4 key购买 nike

我是方解石的新手。它提供的功能看起来很棒!
在进行研究时,我试图找出如何使用示例 ElasticSearch适配器进行一些基本的SQL查询。
AbstractElasticsearchTable.getRowType中,它将行映射到MAP。

问题是:

  • 查询:
    select * from zips where \"city\" = 'BROOKLYN'

    返回:
    city=BROOKLYN; longitude=-73.956985; latitude=40.646694; pop=111396; state=NY; id=11226
  • 查询:
    select \"pop\" from zips where \"city\" = 'BROOKLYN'

    返回:
    pop={pop=111396}

  • 我的目标是总结所有“流行”值。
    所以当我像这样构造查询时:
    select sum(\"pop\") from zips where \"city\" = 'BROOKLYN'

    错误是:

       Caused by: java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to java.lang.Integer
    at Baz$2.apply(Unknown Source)
    at Baz$2.apply(Unknown Source)
    at org.apache.calcite.linq4j.EnumerableDefaults.aggregate(EnumerableDefaults.java:117)
    at org.apache.calcite.linq4j.DefaultEnumerable.aggregate(DefaultEnumerable.java:107)
    at Baz.bind(Unknown Source)
    at org.apache.calcite.jdbc.CalcitePrepare$CalciteSignature.enumerable(CalcitePrepare.java:356)


    有人可以指出我正确的方向,以弄清楚如何使用示例中的映射进行聚合吗?

    为了执行此查询,我在 ElasticSearchAdapterTest.java中添加了一个测试。
    @Test
    public void select() {
    CalciteAssert.that().with(newConnectionFactory())
    .query("select sum(\"pop\") from zips where \"city\" = 'BROOKLYN'").returns("");
    }

    最佳答案

    RowType作为StructType的实现解决了我的问题。这里是:

      public RelDataType getRowType(RelDataTypeFactory typeFactory) {
    try {
    Map<String, String> mapping = getMapping();
    List<RelDataType> types = new ArrayList<RelDataType>();
    List<String> names = new ArrayList<>();
    for(Map.Entry<String, String> e : mapping.entrySet()) {
    names.add(e.getKey());
    types.add(translateEsType(e.getValue(), typeFactory));
    }
    return typeFactory.createStructType(types, names);
    } catch(IOException e) {
    throw new RuntimeException(e.getMessage(), e);
    }

    }

    关于elasticsearch - 行类型为_MAP时,从表中选择方解石选择计数(intCol)(elasticsearch示例),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52747958/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com