[英]Elastic Search: Transport Client to High Level Rest Client
我正在嘗試建立到本地彈性搜索實例的連接。
以前,我使用傳輸客戶端來創建
我嘗試使用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());
}
在我的配置中。 但是,使用高級客戶端時,客戶端方法會顯示錯誤,因為它屬於客戶端類型。
請讓我知道是否有可能解決此問題。
提前致謝。
新的Spring Data ElasticSearch升級了他們的方法。 所以代替:
@Bean
ElasticsearchOperations elasticsearchTemplate() throws Exception {
return new ElasticsearchTemplate(client());
}
應該是:
@Bean
ElasticsearchOperations elasticsearchTemplate() throws Exception {
return new ElasticsearchRestTemplate(client());
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.