Я пытаюсь установить соединение с локальным экземпляром Elastic Search.
Ранее я использовал транспортный клиент для создания
- Controller.
- Config
- Загрузчик (с использованием @PostConstruct)
- Репозиторий (расширяет ElasticSearchRepositores)
- Сущность (аннотация @Document)
Я пытался достичь той же функциональностииспользуя HighLevel Rest Client.
Ниже приведены мои компоненты:
@Configuration
@EnableElasticsearchRepositories(basePackages = "com.abd.def.hig.monitor.repo")
public class ElasticsearchConfig {
@Bean(destroyMethod = "close")
public RestHighLevelClient client() {
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(new HttpHost("localhost",9200,"http")));
// System.out.println("client is" + client.indices().get());
return client;
}
}
public interface ElasticSearchRepo extends ElasticsearchRepository<Store,Long> {
}
package com.fg.pos.tpdjavaagent.monitor.model;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
import com.fg.pos.tpdjavaagent.monitor.model.ApplicationStats;
@Document(indexName = "storedtls", type = "storedtls")
public class Store {
@Id
String siteCode;
String siteName;
String formatCode;
String zone;
String posType;
String ipAddress;
String tpAdmin;
String applicationVersion;
String osType;
String ISPType;
public Store(String siteCode, String siteName, String formatCode, String zone, String posType, String ipAddress,
String tpAdmin, String applicationVersion, String osType, String iSPType,
ApplicationStats applicationStats) {
super();
this.siteCode = siteCode;
this.siteName = siteName;
this.formatCode = formatCode;
this.zone = zone;
this.posType = posType;
this.ipAddress = ipAddress;
this.tpAdmin = tpAdmin;
this.applicationVersion = applicationVersion;
this.osType = osType;
ISPType = iSPType;
this.applicationStats = applicationStats;
}
ApplicationStats applicationStats;
public String getSiteCode() {
return siteCode;
}
public void setSiteCode(String siteCode) {
this.siteCode = siteCode;
}
public String getSiteName() {
return siteName;
}
public void setSiteName(String siteName) {
this.siteName = siteName;
}
public String getFormatCode() {
return formatCode;
}
public void setFormatCode(String formatCode) {
this.formatCode = formatCode;
}
public String getZone() {
return zone;
}
public void setZone(String zone) {
this.zone = zone;
}
public String getPosType() {
return posType;
}
public void setPosType(String posType) {
this.posType = posType;
}
public String getIpAddress() {
return ipAddress;
}
public void setIpAddress(String ipAddress) {
this.ipAddress = ipAddress;
}
public String getTpAdmin() {
return tpAdmin;
}
public void setTpAdmin(String tpAdmin) {
this.tpAdmin = tpAdmin;
}
public String getApplicationVersion() {
return applicationVersion;
}
public void setApplicationVersion(String applicationVersion) {
this.applicationVersion = applicationVersion;
}
public String getOsType() {
return osType;
}
public void setOsType(String osType) {
this.osType = osType;
}
public String getISPType() {
return ISPType;
}
public void setISPType(String iSPType) {
ISPType = iSPType;
}
public ApplicationStats getApplicationStats() {
return applicationStats;
}
public void setApplicationStats(ApplicationStats applicationStats) {
this.applicationStats = applicationStats;
}
}
Когда я удаляю @EnableElasticsearchRepositories из файла конфигурации, все работает нормально.Однако, когда я добавляю то же самое, я получаю ошибку, указанную ниже:
Consider defining a bean named 'elasticsearchTemplate' in your configuration.
Одним из способов решения этой проблемы при использовании транспортного клиента было просто добавить:
@Bean
ElasticsearchOperations elasticsearchTemplate() throws Exception {
return new ElasticsearchTemplate(client());
}
Внутри моей конфигурации.Однако метод client показывает ошибку, когда используется клиент высокого уровня, поскольку он относится к типу Client.
Пожалуйста, дайте мне знать, если что-нибудь можно исправить.
Заранее спасибо.