【问题标题】:Why does Elasticsearch2 Adapter gives a 'cannot connect to any node' while trying to connect to elasticsearch为什么 Elasticsearch2 适配器在尝试连接到 elasticsearch 时会给出“无法连接到任何节点”
【发布时间】:2018-12-18 10:19:17
【问题描述】:

我正在使用 elasticsearch 版本-6.1.1。我已经下载了方解石框架项目并按照 (https://calcite.apache.org/docs/tutorial.html) 的教程在我的机器中构建它,当我尝试使用给定的方解石的 Elasticsearch2adaptor 连接到弹性搜索时这里(https://calcite.apache.org/docs/elasticsearch_adapter.html).i'm 收到以下错误 错误:

*E:\calcite\elasticsearch2>sqlline
sqlline version 1.3.0
sqlline> !connect jdbc:calcite:model=target/test-classes/mymodel.json admin admin
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Connecting to jdbc:calcite:model=target/test-classes/mymodel.json
java.lang.RuntimeException: Error instantiating JsonCustomSchema(name=elasticsearch)
at org.apache.calcite.model.ModelHandler.visit(ModelHandler.java:275)
at org.apache.calcite.model.JsonCustomSchema.accept(JsonCustomSchema.java:45)
at org.apache.calcite.model.ModelHandler.visit(ModelHandler.java:196)
at org.apache.calcite.model.ModelHandler.<init>(ModelHandler.java:88)
at org.apache.calcite.jdbc.Driver$1.onConnectionInit(Driver.java:104)
at org.apache.calcite.avatica.UnregisteredDriver.connect(UnregisteredDriver.java:139)
at sqlline.DatabaseConnection.connect(DatabaseConnection.java:156)
at sqlline.DatabaseConnection.getConnection(DatabaseConnection.java:204)
at sqlline.Commands.connect(Commands.java:1095)
at sqlline.Commands.connect(Commands.java:1001)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at sqlline.ReflectiveCommandHandler.execute(ReflectiveCommandHandler.java:38)
at sqlline.SqlLine.dispatch(SqlLine.java:791)
at sqlline.SqlLine.begin(SqlLine.java:668)
at sqlline.SqlLine.start(SqlLine.java:373)
at sqlline.SqlLine.main(SqlLine.java:265)
Caused by: java.lang.RuntimeException: ***Cannot connect to any elasticsearch nodes***
at org.apache.calcite.adapter.elasticsearch2.Elasticsearch2Schema.open(Elasticsearch2Schema.java:123)
at org.apache.calcite.adapter.elasticsearch2.Elasticsearch2Schema.<init>(Elasticsearch2Schema.java:73)
at org.apache.calcite.adapter.elasticsearch2.Elasticsearch2SchemaFactory.create(Elasticsearch2SchemaFactory.java:56)
at org.apache.calcite.model.ModelHandler.visit(ModelHandler.java:270)
... 18 more*   

这是 mymodel.json 文件:

{
    "version":"1.0",
    "defaultSchema":"elasticsearch",
    "schemas": [
    {
        "type" : "custom",
        "name" : "elasticsearch",
        "factory" : "org.apache.calcite.adapter.elasticsearch2.Elasticsearch2SchemaFactory",
        "operand" : {
            "coordinates" : "{'127.0.0.1':9300}",
            "userConfig" : "{'bulk.flush.max.actions':10 , 'bulk.flush.max.size.mb': 1}",
            "index" : "movies"
        }
    }
    ]
}

【问题讨论】:

    标签: elasticsearch apache-calcite


    【解决方案1】:

    您提到的适配器与 Elasticsearch 6.x 不兼容

    从适配器的网页引用

    此适配器适用于 Elasticsearch 2.x。将方解石与 Elasticsearch 5.x+ 你可以使用目标适配器的工厂 弹性搜索 5.x:

    您可以将 Elasticsearch 降级到版本 2.x 或 5.x,它应该可以工作

    【讨论】:

    • 这是唯一的选择吗?弹性搜索6.x没有适配器
    • 我也尝试过使用 elasticsearch5adaptor,但得到与“无法连接到任何弹性搜索节点”相同的错误
    • 没有人为 elasticsearch 6.x 创建适配器。如果使用elasticsearch5adaptor,需要使用elasticsearch 5.x,如果使用elasticsearch2adaptor,需要使用elasticsearch 2.x
    • 感谢@JSas 的回复,我会降级我的 elasticsearh 并尝试一下。
    • 是的,它正在使用较低版本。非常感谢 JSas
    猜你喜欢
    • 2015-07-17
    • 1970-01-01
    • 2017-12-09
    • 2018-10-27
    • 2020-06-06
    • 1970-01-01
    • 2019-07-31
    • 1970-01-01
    • 2018-10-23
    相关资源
    最近更新 更多