Elasticsearch数据流与Spring Data 的集成

a0zr77ik  于 2023-02-21  发布在  ElasticSearch
关注(0)|答案(1)|浏览(206)

我们有时间序列数据,然后使用ElasticSearch数据流
我正在使用springboot,具有以下依赖项

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

Spring Data似乎因以下错误而停止工作:

Error Message: cannot create index with name [my_datastream_index_test], because it matches with template [my-datastream-index-template] that creates data streams only, use create data stream api instead

Caused by: ElasticsearchStatusException[Elasticsearch exception [type=illegal_argument_exception, reason=cannot create index with name [my_datastream_index_test], because it matches with template [my-datastream-index-template] that creates data streams only, use create data stream api instead]]
    at org.elasticsearch.rest.BytesRestResponse.errorFromXContent(BytesRestResponse.java:178)
    at org.elasticsearch.client.RestHighLevelClient.parseEntity(RestHighLevelClient.java:2484)
    at org.elasticsearch.client.RestHighLevelClient.parseResponseException(RestHighLevelClient.java:2461)
    at org.elasticsearch.client.RestHighLevelClient.internalPerformRequest(RestHighLevelClient.java:2184)
    at org.elasticsearch.client.RestHighLevelClient.performRequest(RestHighLevelClient.java:2154)
    at org.elasticsearch.client.RestHighLevelClient.performRequestAndParseEntity(RestHighLevelClient.java:2118)
    at org.elasticsearch.client.IndicesClient.create(IndicesClient.java:152)
    at org.springframework.data.elasticsearch.core.RestIndexTemplate.lambda$doCreate$0(RestIndexTemplate.java:86)
    at org.springf

弹性Spring数据可以和数据流一起工作吗?我期望它是无缝的过渡。我错过了什么吗?
存储库Bean本身不会创建:

Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.data.elasticsearch.repository.support.SimpleElasticsearchRepository]: Constructor threw exception; nested exception is RestStatusException{status=400} org.springframework.data.elasticsearch.RestStatusException: Elasticsearch exception [type=illegal_argument_exception, reason=cannot create index with name [my_datastream_index_test], because it matches with template [my-datastream-index-template] that creates data streams only, use create data stream api instead]; nested exception is ElasticsearchStatusException[Elasticsearch exception [type=illegal_argument_exception, reason=cannot create index with name [my_datastream_index_test], because it matches with template [my-datastream-index-template] that creates data streams only, use create data stream api instead]]
    at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:224)
    at org.springframework.data.repository.core.support.RepositoryFactorySupport.lambda$instantiateClass$5(RepositoryFactorySupport.java:579)
    at java.util.Optional.map(Optional.java:215)
    at org.springframework.data.repository.core.support.RepositoryFactorySupport.instantiateClass(RepositoryFactorySupport.java:579)
    at org.springframework.data.repository.core.support.RepositoryFactorySupport.getTargetRepositoryViaReflection(RepositoryFactorySupport.java:544)
    at org.springframework.data.elasticsearch.repository.support.ElasticsearchRepositoryFactory.getTargetRepository(ElasticsearchRepositoryFactory.java:74)
    at org.springframework.data.repository.core.support.RepositoryFactorySupport.getRepository(RepositoryFactorySupport.java:325)
    at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.lambda$afterPropertiesSet$5(RepositoryFactoryBeanSupport.java:323)
    at org.springframework.data.util.Lazy.getNullable(Lazy.java:231)
    at org.springframework.data.util.Lazy.get(Lazy.java:115)
    at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.afterPropertiesSet(RepositoryFactoryBeanSupport.java:329)
    at org.springframework.data.elasticsearch.repository.support.ElasticsearchRepositoryFactoryBean.afterPropertiesSet(ElasticsearchRepositoryFactoryBean.java:69)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1863)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1800)
    ... 161 more
o75abkj4

o75abkj41#

首先,正如瓦尔所评论的,Spring Data Elasticsearch目前创建索引,但不创建数据流。
第二,根据错误消息,我假设数据流是由索引模板创建的,您需要阻止Spring Data Elasticsearch自动创建索引,您可以通过将createIndex值添加到实体类的@Document注解中来做到这一点:

@Document(indexName = "my_datastream_index_test", createIndex = false)

相关问题