在RestHighLevelClient中增加用戶名密碼驗證


@Configuration
public class ElasticSearchClient {
    @Value("${ElasticSearch.Hosts}")
    private String hosts;
    @Value("${ElasticSearch.UserName}")
    private String userName;
    @Value("${ElasticSearch.Password}")
    private String password;
    
    @SuppressWarnings("deprecation")
    @Bean(name="esClient")
    public RestHighLevelClient getClient() {
        String[] hosts = this.hosts.split(",");
        HttpHost[] httpHosts = new HttpHost[hosts.length];
        for(int i=0;i<hosts.length;i++) {
            httpHosts[i] = new HttpHost(hosts[i], 9200, "http");
        }
        //設置密碼
        final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
        credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(userName, password));
        //設置超時
        RestClientBuilder builder = RestClient.builder(httpHosts).setRequestConfigCallback(new RestClientBuilder.RequestConfigCallback() {
            @Override
            public RequestConfig.Builder customizeRequestConfig(RequestConfig.Builder requestConfigBuilder) {
                requestConfigBuilder.setConnectTimeout(-1);
                requestConfigBuilder.setSocketTimeout(-1);
                requestConfigBuilder.setConnectionRequestTimeout(-1);
                return requestConfigBuilder;
            }
        }).setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() {
            @Override
            public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpClientBuilder) {
                httpClientBuilder.disableAuthCaching();
                return httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
            }
        }).setMaxRetryTimeoutMillis(5*60*1000);
        
        RestHighLevelClient client = new RestHighLevelClient(builder);
        return client;
    }
}

原生通過client查詢數據

    @Test
    public void test1(){
        RestHighLevelClient client = elasticSearchClient.getClient();
        BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
        SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
        QueryStringQueryBuilder queryStringQueryBuilder = QueryBuilders.queryStringQuery("st1").field("message");
        boolQueryBuilder.must(queryStringQueryBuilder);
        sourceBuilder.query(boolQueryBuilder);
        SearchRequest searchRequest = new SearchRequest("st_test_2021_01_25");// 這里直接配置索引名即可
        // searchRequest.indices("st_test_2021_01_25");
        searchRequest.source(sourceBuilder);// 把查詢函數構造對象注入查詢請求中
        SearchResponse searchResponse;// 創建響應對象

        SearchHits searchHits = null;
        try {
            searchResponse =client.search(searchRequest,RequestOptions.DEFAULT);
            searchHits =  searchResponse.getHits();//獲取響應中的列表數據
            long totalHits = searchHits.getTotalHits();
            SearchHit[] hits = searchHits.getHits();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM