Я пытался писать на Elasticsearch с несколькими индексами. В настоящее время я установил Spring v5.2.3.RELEASE и Spring Boot v2.2.4.RELEASE.
Я нашел несколько решений, позволяющих использовать несколько индексов с использованием технологии SPEL Spring, но я не могу заставить ее работать.
В настоящее время у меня есть эти файлы:
ElasticDBDbConfig. java
package edu.unifi.disit.datamanager.config;
@Configuration
@EnableTransactionManagement
@EnableElasticsearchRepositories(basePackages = { "edu.unifi.disit.datamanager.datamodel.elasticdb"})
public class ElasticDBDbConfig {
@Value("${elasticsearch.protocol}")
private String esProtocol;
@Value("${elasticsearch.host}")
private String esHost;
@Value("${elasticsearch.port}")
private int esPort;
@Value("${elasticsearch.clustername}")
private String esClusterName;
@Bean(destroyMethod = "close")
public RestHighLevelClient elasticsearchClient() {
return new RestHighLevelClient(RestClient.builder(new HttpHost(esHost,esPort,esProtocol)));
}
@Bean
public ElasticsearchRestTemplate elasticsearchTemplate() {
ElasticsearchRestTemplate elasticsearchTemplate = new
ElasticsearchRestTemplate(elasticsearchClient());
elasticsearchTemplate.putMapping(KPIElasticValue.class);
return elasticsearchTemplate;
}
ConfigIndexBean. java
package edu.unifi.disit.datamanager.config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;
@Configuration
@Component("configIndexBean")
public class ConfigIndexBean {
@Value("${elasticsearch.dummyIndex}")
private String indexName;
public String getIndexName() {
return indexName;
}
public void setIndexName(String indexName) {
this.indexName = indexName;
}
}
KPIElasticValue. java
package edu.unifi.disit.datamanager.datamodel.elasticdb;
@JsonInclude(JsonInclude.Include.NON_NULL)
@Entity
@JsonSerialize(using = KPIElasticValueSerializer.class)
@JsonDeserialize(using = KPIElasticValueDeserializer.class)
@ComponentScan(basePackages = "edu.unifi.disit.datamanager.config")
@Document(type = "_doc", indexName = "#{@configIndexBean.getIndexName()}")
public class KPIElasticValue {
Есть ли у вас какие-либо идеи?
Я также пытаюсь
@Document(type = "_doc", indexName = "#{configIndexBean.getIndexName()}")
@Document(type = "_doc", indexName = "#{configIndexBean.indexName}")
Исключение составляет:
EL1057E: в преобразователе компонентов не зарегистрировано контекст для разрешения доступа к бину 'configIndexBean'