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

Spring boot弹性搜索在服务器启动时失败

钱德元
2023-03-14

import javax.persistence.Id;

import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType;


/**
 * The Class ElasticSearchSampleEntity.
 */
@Document(indexName = "Sample-index", type = "Sample-content")
public class ElasticSearchSampleEntity {

    /** The es Sample entity id. */
    @Id
    @Field(type = FieldType.Long, index = true, name = "id")
    private Long esSampleEntityId;


    /** The es no of questions. */
    @Field(type = FieldType.Integer, index = true)
    private Integer esNoOfQuestions;

    /** The es total marks. */
    @Field(type = FieldType.Integer, index = true)
    private Integer esTotalMarks;

    /** The es total time min. */
    @Field(type = FieldType.Short, index = true)
    private Short esTotalTimeMin;

    /** The es total time sec. */
    @Field(type = FieldType.Short, index = true)
    private Short esTotalTimeSec;

    /** The es occurances. */
    @Field(type = FieldType.Integer, index = true)
    private Integer esOccurances;


    /** The es rating. */
    @Field(type = FieldType.Float, index = true)
    private Float esRating;


    /** The es created on. */
    @Field(type = FieldType.Long, index = true)
    private Long esCreatedDate;

    /** The es updated on. */
    @Field(type = FieldType.Long, index = true)
    private Long esUpdatedDate;

    /** The es published date. */
    @Field(type = FieldType.Long, index = true)
    private Long publishedDate;

    /** The sample type id. */
    @Field(type = FieldType.Integer, index = true)
    private Integer sampleTypeId;


    //getter and setter

}

这应该创建一次索引,并将数据存储到elastic Server。然而,在部署过程中,我们有时会遇到以下错误(间歇性问题)。

[main] ERROR o.s.boot.SpringApplication.reportFailure - Application run failed
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'sampleController': Unsatisfied dependency expressed through field 'esSampleService'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'elasticSearchSampleServiceImpl': Unsatisfied dependency expressed through field 'esSampleRepo'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'elasticSearchSampleRepository': Invocation of init method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.data.elasticsearch.repository.support.SimpleElasticsearchRepository]: Constructor threw exception; nested exception is java.lang.IllegalArgumentException: mapper [sampleTypeId] cannot be changed from type [long] to [integer]

SampleTypeId创建(或更新)的时间有时也一样长,尽管我们特别提到它是整数。这就是问题的起因。我已经检查了数据类型,同时保存到弹性数据库以及,这看起来很好。这是否意味着弹性索引会随着每次部署而更新。对于数据库,我们做spring.jpa.hibernate.ddl-auto=validate,对于弹性,我们能做同样的事情吗?我不明白为什么会发生这个问题。映射似乎没问题。请帮帮我。

共有1个答案

漆雕兴平
2023-03-14

下面的错误日志片段很重要。

构造函数引发异常;嵌套异常是java.lang.IllegalArgumentException:mapper[sampleTypeId]不能从类型[long]更改为[integer]

看起来,在前面创建的索引中,SampleTypeID被定义为Long,现在将其更改为int,这是不可能的,因此从ElasticSearch引发异常。

 类似资料:
  • 我有一个由5个服务器组成的集群用于elasticsearch,所有服务器都具有相同的elasticsearch版本。 我需要将服务器2、3、4、5的所有数据移动到服务器1。 我怎么做? 以下内容:

  • 在 cmd 中运行 elasticsearch.bat :

  • 我正在使用elasticsearch7。5、我已打开以下属性 我已经生成了API密钥来将我们的springboot连接到elasticsearch。我正在使用 我的所有请求都来自“RestHighClient”,并且能够触发请求。唯一的问题是在服务器启动期间,它们是一些无法连接到Elasticsearch的错误。 在pom中。xml 在应用程序属性中: 有人能给我提个建议吗,我怎样才能解决它。

  • 我有一个弹性搜索实例作为windows服务运行。在启动我的另一个新实例时,出现以下错误。我在文件中给出了不同的集群名称和端口。 null

  • 我已经使用自制软件设置了日志存储和弹性搜索。Logstash需要很长时间才能连接或启动。这就是我启动Logstash的方式(从另一个答案中添加了协议) 我用elasticsearch启动ES,在Logstash终端上得到的输出是: 使用里程碑2输入插件“udp”。这个插件应该是稳定的,但如果你看到奇怪的行为,请让我们知道!有关插件里程碑的更多信息,请参阅http://logstash.net/do

  • elasticsearch.yml: graylog2.conf: 我正在尝试安装在我的apache本地主机中。 我已经学习了https://www.digitalocean.com/community/tutorials/how-to-install-graylog2-and-centralize-logs-on-ubuntu-14-04教程 输出:2016-01-18 18:45:53,221