废话不多说直接上代码:
依赖如下:
<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());
}
}
}