簡體   English   中英

彈性搜索:將客戶端傳輸到高級其余客戶端

[英]Elastic Search: Transport Client to High Level Rest Client

我正在嘗試建立到本地彈性搜索實例的連接。

以前,我使用傳輸客戶端來創建

  1. 控制器。
  2. 設定檔
  3. 加載器(使用@PostConstruct)
  4. 存儲庫(擴展ElasticSearchRepositores)
  5. 實體(@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());
    }

在我的配置中。 但是,使用高級客戶端時,客戶端方法會顯示錯誤,因為它屬於客戶端類型。

請讓我知道是否有可能解決此問題。

提前致謝。

新的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM