【问题标题】:Getting error in ElasticSearch在 ElasticSearch 中出现错误
【发布时间】:2018-01-09 18:07:30
【问题描述】:

我将 ElasticSearch-5.2.1 与 springboot 一起使用,并且在 elasticsearch.bat 中出现错误

java.lang.IllegalStateException:收到来自不受支持版本的消息:[2.0.0] 最低兼容版本为:[5.0.0]

在我的应用程序控制台中出现以下错误:

原因:org.elasticsearch.client.transport.NoNodeAvailableException:配置的节点都不可用:[{#transport#-1}{127.0.0.1}{127.0.0.1:9300}]

当我在谷歌搜索时,它要求升级传输客户端,但我如何将传输客户端从 2.0 升级到 5.0

下面是我的配置代码:

@Value("${elasticsearch.port}")
private int EsPort;

@Value("${elasticsearch.clustername}")
private String EsClusterName;

@Value("${elasticsearch.host}") 私有字符串 EsHost;

 @Bean
public Client client() throws Exception {

    Settings esSettings = Settings.settingsBuilder().put("cluster.name", EsClusterName).build();


    return TransportClient.builder()
            .settings(esSettings)
            .build()
            .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(EsHost), EsPort));
}

@Bean
public ElasticsearchOperations elasticsearchTemplate() throws Exception {
    return new ElasticsearchTemplate(client());
}

【问题讨论】:

    标签: spring-data-elasticsearch


    【解决方案1】:

    确保弹性集群已启动: 在浏览器中点击 url http://localhost:9200。 它应该给出类似于以下的内容:

        {
      "name" : "JXfjbaL",
      "cluster_name" : "docker-cluster",
      "cluster_uuid" : "7XzGYbE8QkGCMRwbqEriJw",
      "version" : {
        "number" : "5.5.3",
        "build_hash" : "9305a5e",
        "build_date" : "2017-09-07T15:56:59.599Z",
        "build_snapshot" : false,
        "lucene_version" : "6.6.0"
      },
      "tagline" : "You Know, for Search"
    }
    

    在您的 application.properties 中添加“cluster_name”值作为“elasticsearch.clustername”: application.properties 中的示例值:

    elasticsearch.clustername =docker-cluster
    elasticsearch.host =localhost
    elasticsearch.port =9300
    

    确保传输客户端在弹性搜索中启动并运行,从终端执行以下命令: curl -XGET http://localhost:9300 这应该给你以下答复: “这不是 HTTP 端口”

    (如果你在 windows 上请安装 curl)

    这意味着您的集群已启动并正在运行。

    在您的 pom.xml 中添加以下依赖项:

    <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-elasticsearch</artifactId>
    </dependency>
    

    这应该为您的 spring 项目获取正确的 spring 数据弹性依赖项。 将您的传输客户端声明更改为以下使用的声明:

      TransportClient client = new PreBuiltTransportClient(esSettings)
                .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(EsHost), EsPort));
    

    以上配置应该可以正常工作。 如果您通过 docker 运行弹性搜索。然后确保您运行 docker 映像的命令如下所示。这会处理主机映射并禁用 xpack 安全性。

    docker run -p 9200:9200 -p 9300:9300 -e "http.host=0.0.0.0" -e "transport.host=0.0.0.0" -e "xpack.security.enabled=false" docker.elastic.co/elasticsearch/elasticsearch:5.5.3
    

    【讨论】:

    猜你喜欢
    • 2022-12-22
    • 1970-01-01
    • 1970-01-01
    • 2016-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-14
    • 1970-01-01
    相关资源
    最近更新 更多