1. 程式人生 > 其它 >ElasticSearch多源配置

ElasticSearch多源配置

直接上程式碼

yml檔案配置資訊

elasticsearch:
    works: #單篇稿件的ES庫配置資訊
        node1: http://***.**.***.***:9201 #localhost:9200
        node2: http://***.**.***.***:9202
        node3: http://***.**.***.***:9203
        connTimeout: 30000 # 連線超時時間
        socketTimeout: 30000 # socket超時時間
        connectionRequestTimeout: 30000 # 連結請求超時時間
        index: spreadimpact #索引
        maxConnectNum: 
100 #最大連線數 maxConnectPerRoute: 100 #最大路由連線數 yq: #全網資料的ES庫配置資訊 # es連線地址和埠 host: ***.***.***.*** # es埠 port: 9200 # 連線超時時間 connTimeout: 10000 # socket超時時間 socketTimeout: 10000 # 連結請求超時時間 connectionRequestTimeout: 20000 # 索引 index: nday_test

 

1.SystemConfiguration類

@Slf4j
@Configuration
@Getter
public class SystemConfiguration {
    @Value("${elasticsearch.works.node1}")
    private String node1;
    @Value("${elasticsearch.works.node2}")
    private String node2;
    @Value("${elasticsearch.works.node3}")
    private String node3;
    @Value(
"${elasticsearch.works.connTimeout}") private int connTimeout; @Value("${elasticsearch.works.socketTimeout}") private int socketTimeout; @Value("${elasticsearch.works.connectionRequestTimeout}") private int connectionRequestTimeout; /**最大連線數*/ @Value("${elasticsearch.works.maxConnectNum}") private int maxConnectNum; /** 最大路由連線數 */ @Value("${elasticsearch.works.maxConnectPerRoute}") private int maxConnectPerRoute; /** *下面是專題活動ES庫的配置資訊 */ @Value("${elasticsearch.yq.host}") private String host; @Value("${elasticsearch.yq.port}") private int port; @Value("${elasticsearch.yq.connTimeout}") private int connectTimeOut; @Value("${elasticsearch.yq.socketTimeout}") private int socketTimeOut; @Value("${elasticsearch.yq.connectionRequestTimeout}") private int connectionRequestTimeOut; }

 

 

2.SpringEsConfig類

@Slf4j
@Configuration
public class ElasticSearchConfiguration {
@Autowired
    SystemConfiguration sysConfig;

    /**
     * 
     * @return RestHighLevelClient
     */
    @Bean(destroyMethod = "close", name = "client")
    public RestHighLevelClient initRestClient() {
        RestClientBuilder builder = RestClient.builder(
                        HttpHost.create(sysConfig.getNode1()),
                        HttpHost.create(sysConfig.getNode2()),
                        HttpHost.create(sysConfig.getNode3()));
        builder.setRequestConfigCallback(requestConfigBuilder -> requestConfigBuilder
                        .setConnectTimeout(sysConfig.getConnTimeout())
                        .setSocketTimeout(sysConfig.getSocketTimeout())
                        .setConnectionRequestTimeout(sysConfig.getConnectionRequestTimeout()));

        builder.setHttpClientConfigCallback(httpClientBuilder ->
                    httpClientBuilder.setMaxConnTotal(sysConfig.getMaxConnectNum())
                    .setMaxConnPerRoute(sysConfig.getMaxConnectPerRoute()));

        return new RestHighLevelClient(builder);
    }

    /**
     *
     * @return RestHighLevelClient
     */
    @Bean(destroyMethod = "close", name = "yq-client")
    public RestHighLevelClient initClient() {

        RestClientBuilder builder = RestClient.builder(new HttpHost(sysConfig.getHost(), sysConfig.getPort()))
                .setRequestConfigCallback(requestConfigBuilder -> requestConfigBuilder
                        .setConnectTimeout(sysConfig.getConnectTimeOut())
                        .setSocketTimeout(sysConfig.getSocketTimeOut())
                        .setConnectionRequestTimeout(sysConfig.getConnectionRequestTimeout()));
        return new RestHighLevelClient(builder);
    }

 


3. ESHighClient注入使用
@Service
public class CblWorksServiceImpl implements ICblWorksService {
    private final RestHighLevelClient restHighLevelClient;

    public CblWorksServiceImpl(@Qualifier("yq-client") RestHighLevelClient restHighLevelClient) {
        this.restHighLevelClient = restHighLevelClient;
    }

//此處進行client的使用

@Override
public AreaForwardOrderListVO getAreaForwardOrderList(String title) {
    //1.建立請求
    SearchRequest searchRequest = new SearchRequest(index);
    //2.組合查詢條件
    BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
    boolQueryBuilder.must(QueryBuilders.matchPhraseQuery("title", title));
    //3.條件放入到request中
    searchSourceBuilder.query(boolQueryBuilder);
    searchRequest.source(searchSourceBuilder);
    SearchResponse searchResponse = null;
    List<String> xxData = new ArrayList<>();
    List<Integer> yyData = new ArrayList<>();
    AreaForwardOrderListVO vo = new AreaForwardOrderListVO();
    try {
        searchResponse = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
        if (searchResponse != null) {
        SearchHit[] searchHits = searchResponse.getHits().getHits();
         //下面進行相關的資料處理
        ...
        }
    } 
    return vo;
} }