当前位置: 首页 > 知识库问答 >
问题:

在ElasticSearch中得到错误

颛孙玉石
2023-03-14

我将ElasticSearch-5.2.1与springboot一起使用,并在ElasticSearch中获得以下错误。球棒

JAVAlang.IllegalStateException:从不受支持的版本[2.0.0]收到的消息最小兼容版本为:[5.0.0]

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

原因:org。弹性搜索。客户运输NoNoNodeAvailableException:没有配置的节点可用:[{#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;

@值(“${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());
}

共有1个答案

丰博
2023-03-14

确保elastic cluster已启动:点击urlhttp://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"
}

在应用程序中添加“cluster_name”值作为“elasticsearch.clustername”。属性:应用程序中的示例值。属性:

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

要确保在弹性搜索中启动并运行transport client,请从terminal: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
 类似资料:
  • 我只是创建了一个new-project,即使对于新项目,它也会给出如下注释的错误: 生命周期配置不包括的插件执行:org.apache.maven.plugins:maven-compiler-plugin:3.1:compile(执行:default-compile,phase:compile) 生命周期配置不包括的插件执行:org.apache.maven.plugins:maven-reso

  • 问题内容: 我定义这样的张量: 但是当我尝试打印张量的形状时: 我得到 Tensor(“ Shape:0”,shape =(1,),dtype = int32) ,为什么输出结果不应为shape =(100) 问题答案: tf.shape(input,name = None) 返回表示输入形状的一维整数张量。 你要找的:它返回的的变量。

  • 在Windows 7上运行的Tomcat 7使用servlet注释,当我尝试此URL时给我一个404错误:http://localhost:8080/LoginExample/Tomcat使用JRE 1.7,servlet类包含在文件夹中.../webapps/Loginexample。它是使用Java1.7编译的。我没有Web.xml.它部署时没有错误。 这是类:

  • 突然,我的机器人开始出现这个错误: [onTurnError]未处理错误:错误:Get Token请求返回http错误:401和服务器响应:{“error”:“invalid_client”,“error_description”:“AADSTS7000222:提供的客户端密钥已过期。访问Azure门户为应用程序创建新密钥,或考虑使用证书凭据以增加安全性:https://docs.microsof

  • 我知道有很多类似的问题,但我试过各种各样的事情,仍然不知道该怎么办。我最近才开始学习java,刚刚能够使用文本编辑器用。java文件打印“Hello World”。那时我决定使用IDE并下载了NetBeans12.0。一旦netbeans准备好,我点击“New Project”并选择“Java with Maven”和“Java Application”。一旦我完成了项目的设置,我右键点击这个包并