Springboot 集成ElasticSearch需要密码验证的集成方案

废话不多说直接上代码:

依赖如下:

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.6.2</version>
        <relativePath/>
    </parent>

    <groupId>com.zzy</groupId>
    <artifactId>urlFilter</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>urlFilter</name>
    <description>urlFilter</description>
    <properties>
        <java.version>1.8</java.version>
        <!--<elasticsearch.version>7.9.3</elasticsearch.version>-->
        <testcontainers.version>1.18.0</testcontainers.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
        </dependency>
        <dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>elasticsearch-rest-high-level-client</artifactId>
            <version>7.9.3</version>
        </dependency>

        <dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>elasticsearch-rest-client</artifactId>
            <version>7.9.3</version>
        </dependency>


        <dependency>
            <groupId>org.elasticsearch</groupId>
            <artifactId>elasticsearch</artifactId>
            <version>7.9.3</version>
        </dependency>


        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.testcontainers</groupId>
            <artifactId>junit-jupiter</artifactId>
            <scope>test</scope>
        </dependency>


        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>4.1.2</version>
        </dependency>

        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.8.9</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>RELEASE</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.testcontainers</groupId>
                <artifactId>testcontainers-bom</artifactId>
                <version>${testcontainers.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

配置ES config类

package com.zzy.urlfilter.config;

import lombok.Data;
import lombok.extern.slf4j.Slf4j;

import org.apache.http.HttpHost;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.impl.client.BasicCredentialsProvider;

import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestClientBuilder;
import org.elasticsearch.client.RestHighLevelClient;


import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;



/**
 * @author ZhuZhengYang
 * @description
 * @since 2023/5/5
 */
@Slf4j
@Configuration
@Data
public class ElasticsearchConfig {

    private String clusterName="";
    private String clusterNodes="";
    private String clusterPassword="";

    @Bean
    public RestHighLevelClient elasticsearchClient() {
        final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
        credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(clusterName, clusterPassword));

        final RestClientBuilder restClientBuilder = RestClient.builder(
                HttpHost.create(clusterNodes)
        ).setHttpClientConfigCallback(httpClientBuilder -> {
            httpClientBuilder.disableAuthCaching();
            return httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
        });

        return new RestHighLevelClient(restClientBuilder);
    }


}

编写业务代码:

@SpringBootTest
class UrlFilterApplicationTests {


    @Resource
    private RestHighLevelClient restHighLevelClient;

    @Test
    void contextLoads() {
    }


    @Test
    void test1() throws IOException {

        File file = FileUtil.file("E:\\wechatDownload\\WeChat Files\\wxid_vgz3ihtt3l6922\\FileStorage\\File\\2023-05\\export.xls");

        ExcelReader reader = ExcelUtil.getReader(file);
        List<Map<String, Object>> list = reader.readAll();

        int i=0;
        for (Map<String, Object> map : list) {
            test3( map.get("过滤搜索结果").toString());

        }


    }


    public void test3(String url) throws IOException {

       url= url.replace("www.gov.cn","");
        SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
        BoolQueryBuilder boolQuery = QueryBuilders.boolQuery();
        boolQuery.must(QueryBuilders.matchQuery("doc_pub_url", url));
        sourceBuilder.query(boolQuery);

        SearchRequest request = new SearchRequest();
        request.indices("searchbase_8");
        request.source(sourceBuilder);

        SearchResponse response = restHighLevelClient.search(request, RequestOptions.DEFAULT);

        SearchHit[] hits = response.getHits().getHits();
        for (SearchHit hit : hits) {
            Map<String, Object> map = hit.getSourceAsMap();

            System.out.println(map.get("doc_pub_url").toString());
        }
    }


}

猜你喜欢

转载自blog.csdn.net/qq_46063644/article/details/130510111