Browse Source

隐藏elasticSearch

ai_dev
zhouhaibin 8 months ago
parent
commit
70c2d0c799
  1. 16
      ruoyi-common/guoyan-common-elasticsearch/pom.xml
  2. 208
      ruoyi-common/guoyan-common-elasticsearch/src/main/java/org/dromara/common/elasticsearch/config/ElasticSearchConfig.java
  3. 6
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/PmgPersonProductsServiceImpl.java
  4. 125
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/PmgSupplierProductsServiceImpl.java

16
ruoyi-common/guoyan-common-elasticsearch/pom.xml

@ -15,14 +15,14 @@
guoyan-common-elasticsearch elasticsearch模块 guoyan-common-elasticsearch elasticsearch模块
</description> </description>
<dependencies> <dependencies>
<dependency> <!-- <dependency>-->
<groupId>org.elasticsearch</groupId> <!-- <groupId>org.elasticsearch</groupId>-->
<artifactId>elasticsearch</artifactId> <!-- <artifactId>elasticsearch</artifactId>-->
</dependency> <!-- </dependency>-->
<dependency> <!-- <dependency>-->
<groupId>org.elasticsearch.client</groupId> <!-- <groupId>org.elasticsearch.client</groupId>-->
<artifactId>elasticsearch-rest-high-level-client</artifactId> <!-- <artifactId>elasticsearch-rest-high-level-client</artifactId>-->
</dependency> <!-- </dependency>-->
<!-- 序列化模块 --> <!-- 序列化模块 -->
<dependency> <dependency>
<groupId>org.dromara</groupId> <groupId>org.dromara</groupId>

208
ruoyi-common/guoyan-common-elasticsearch/src/main/java/org/dromara/common/elasticsearch/config/ElasticSearchConfig.java

@ -1,19 +1,19 @@
package org.dromara.common.elasticsearch.config; package org.dromara.common.elasticsearch.config;
import org.apache.http.HttpHost; //import org.apache.http.HttpHost;
import org.apache.http.auth.AuthScope; //import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials; //import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CredentialsProvider; //import org.apache.http.client.CredentialsProvider;
import org.apache.http.impl.client.BasicCredentialsProvider; //import org.apache.http.impl.client.BasicCredentialsProvider;
import org.elasticsearch.client.RestClient; //import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestClientBuilder; //import org.elasticsearch.client.RestClientBuilder;
import org.elasticsearch.client.RestHighLevelClient; //import org.elasticsearch.client.RestHighLevelClient;
import org.springframework.beans.factory.annotation.Value; //import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean; //import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; //import org.springframework.context.annotation.Configuration;
//
import java.util.ArrayList; //import java.util.ArrayList;
import java.util.List; //import java.util.List;
/** /**
* ElasticSearch 配置 * ElasticSearch 配置
@ -21,98 +21,98 @@ import java.util.List;
* @author wqliu * @author wqliu
* @date 2024-02-21 * @date 2024-02-21
*/ */
@Configuration //@Configuration
public class ElasticSearchConfig { public class ElasticSearchConfig {
@Value("${elasticsearch.uris}") // @Value("${elasticsearch.uris}")
private String hosts; // private String hosts;
//
@Value("${elasticsearch.username}") // @Value("${elasticsearch.username}")
private String userName; // private String userName;
//
@Value("${elasticsearch.password}") // @Value("${elasticsearch.password}")
private String password; // private String password;
//
/** // /**
* es 请求方式 // * es 请求方式
*/ // */
@Value("${elasticsearch.scheme}") // @Value("${elasticsearch.scheme}")
private String scheme; // private String scheme;
/** // /**
* es 连接超时时间 // * es 连接超时时间
*/ // */
@Value("${elasticsearch.connectTimeOut}") // @Value("${elasticsearch.connectTimeOut}")
//
private int connectTimeOut; // private int connectTimeOut;
/** // /**
* es socket 连接超时时间 // * es socket 连接超时时间
*/ // */
@Value("${elasticsearch.socketTimeOut}") // @Value("${elasticsearch.socketTimeOut}")
//
private int socketTimeOut; // private int socketTimeOut;
/** // /**
* es 请求超时时间 // * es 请求超时时间
*/ // */
@Value("${elasticsearch.connectionRequestTimeOut}") // @Value("${elasticsearch.connectionRequestTimeOut}")
private int connectionRequestTimeOut; // private int connectionRequestTimeOut;
/** // /**
* es 最大连接数 // * es 最大连接数
*/ // */
@Value("${elasticsearch.maxConnectNum}") // @Value("${elasticsearch.maxConnectNum}")
private int maxConnectNum; // private int maxConnectNum;
/** // /**
* es 每个路由的最大连接数 // * es 每个路由的最大连接数
*/ // */
@Value("${elasticsearch.maxConnectNumPerRoute}") // @Value("${elasticsearch.maxConnectNumPerRoute}")
private int maxConnectNumPerRoute; // private int maxConnectNumPerRoute;
//
//
/** // /**
* 如果@Bean没有指定bean的名称那么方法名就是bean的名称 // * 如果@Bean没有指定bean的名称,那么方法名就是bean的名称
*/ // */
@Bean // @Bean
public RestHighLevelClient restHighLevelClient() { // public RestHighLevelClient restHighLevelClient() {
// 构建连接对象 // // 构建连接对象
RestClientBuilder builder = RestClient.builder(getEsHost()); // RestClientBuilder builder = RestClient.builder(getEsHost());
//
// 连接延时配置 // // 连接延时配置
builder.setRequestConfigCallback(requestConfigBuilder -> { // builder.setRequestConfigCallback(requestConfigBuilder -> {
requestConfigBuilder.setConnectTimeout(connectTimeOut); // requestConfigBuilder.setConnectTimeout(connectTimeOut);
requestConfigBuilder.setSocketTimeout(socketTimeOut); // requestConfigBuilder.setSocketTimeout(socketTimeOut);
requestConfigBuilder.setConnectionRequestTimeout(connectionRequestTimeOut); // requestConfigBuilder.setConnectionRequestTimeout(connectionRequestTimeOut);
return requestConfigBuilder; // return requestConfigBuilder;
}); // });
//
// 连接数配置 // // 连接数配置
builder.setHttpClientConfigCallback(httpClientBuilder -> { // builder.setHttpClientConfigCallback(httpClientBuilder -> {
httpClientBuilder.setMaxConnTotal(maxConnectNum); // httpClientBuilder.setMaxConnTotal(maxConnectNum);
httpClientBuilder.setMaxConnPerRoute(maxConnectNumPerRoute); // httpClientBuilder.setMaxConnPerRoute(maxConnectNumPerRoute);
httpClientBuilder.setDefaultCredentialsProvider(getCredentialsProvider()); // httpClientBuilder.setDefaultCredentialsProvider(getCredentialsProvider());
//
return httpClientBuilder; // return httpClientBuilder;
}); // });
return new RestHighLevelClient(builder); // return new RestHighLevelClient(builder);
} // }
//
private HttpHost[] getEsHost() { // private HttpHost[] getEsHost() {
// 拆分地址(es为多节点时,不同host以逗号间隔) // // 拆分地址(es为多节点时,不同host以逗号间隔)
List<HttpHost> hostLists = new ArrayList<>(); // List<HttpHost> hostLists = new ArrayList<>();
String[] hostList = hosts.split(","); // String[] hostList = hosts.split(",");
for (String addr : hostList) { // for (String addr : hostList) {
String host = addr.split(":")[0]; // String host = addr.split(":")[0];
String port = addr.split(":")[1]; // String port = addr.split(":")[1];
hostLists.add(new HttpHost(host, Integer.parseInt(port), scheme)); // hostLists.add(new HttpHost(host, Integer.parseInt(port), scheme));
} // }
// 转换成 HttpHost 数组 // // 转换成 HttpHost 数组
return hostLists.toArray(new HttpHost[]{}); // return hostLists.toArray(new HttpHost[]{});
} // }
//
private CredentialsProvider getCredentialsProvider() { // private CredentialsProvider getCredentialsProvider() {
// 设置用户名、密码 // // 设置用户名、密码
CredentialsProvider credentialsProvider = new BasicCredentialsProvider(); // CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(userName, password)); // credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(userName, password));
return credentialsProvider; // return credentialsProvider;
} // }
/** /**
* 同步方式 * 同步方式

6
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/PmgPersonProductsServiceImpl.java

@ -19,6 +19,7 @@ import org.dromara.productManagement.domain.vo.PmgPersonProductsVo;
import org.dromara.productManagement.domain.PmgPersonProducts; import org.dromara.productManagement.domain.PmgPersonProducts;
import org.dromara.productManagement.mapper.PmgPersonProductsMapper; import org.dromara.productManagement.mapper.PmgPersonProductsMapper;
import org.dromara.productManagement.service.IPmgPersonProductsService; import org.dromara.productManagement.service.IPmgPersonProductsService;
import org.springframework.web.multipart.MultipartFile;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -168,4 +169,9 @@ public class PmgPersonProductsServiceImpl implements IPmgPersonProductsService {
}); });
return baseMapper.deleteBatchIds(ids) > 0; return baseMapper.deleteBatchIds(ids) > 0;
} }
@Override
public void personProductsImportData(MultipartFile file, boolean updateSupport) {
// TODO 导入个人产品数据
}
} }

125
zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/PmgSupplierProductsServiceImpl.java

@ -14,17 +14,17 @@ import lombok.RequiredArgsConstructor;
import org.dromara.productManagement.domain.*; import org.dromara.productManagement.domain.*;
import org.dromara.productManagement.mapper.PmgSupplierProductModelDetailsMapper; import org.dromara.productManagement.mapper.PmgSupplierProductModelDetailsMapper;
import org.dromara.productManagement.mapper.PmgSupplierProductModelMapper; import org.dromara.productManagement.mapper.PmgSupplierProductModelMapper;
import org.elasticsearch.action.search.SearchRequest; //import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse; //import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.RequestOptions; //import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient; //import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.index.query.QueryBuilders; //import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.SearchHit; //import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.SearchHits; //import org.elasticsearch.search.SearchHits;
import org.elasticsearch.search.builder.SearchSourceBuilder; //import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder; //import org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder;
import org.springframework.beans.BeanUtils; //import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; //import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.dromara.productManagement.domain.bo.PmgSupplierProductsBo; import org.dromara.productManagement.domain.bo.PmgSupplierProductsBo;
import org.dromara.productManagement.domain.vo.PmgSupplierProductsVo; import org.dromara.productManagement.domain.vo.PmgSupplierProductsVo;
@ -49,8 +49,8 @@ public class PmgSupplierProductsServiceImpl implements IPmgSupplierProductsServi
private final PmgSupplierProductsMapper baseMapper; private final PmgSupplierProductsMapper baseMapper;
private final PmgSupplierProductModelDetailsMapper supplierProductModelDetailsMapper; private final PmgSupplierProductModelDetailsMapper supplierProductModelDetailsMapper;
private final PmgSupplierProductModelMapper supplierProductModelMapper; private final PmgSupplierProductModelMapper supplierProductModelMapper;
@Autowired // @Autowired
private RestHighLevelClient client; // private RestHighLevelClient client;
/** /**
* 查询供应商产品管理 * 查询供应商产品管理
* *
@ -188,54 +188,55 @@ public class PmgSupplierProductsServiceImpl implements IPmgSupplierProductsServi
return baseMapper.deleteBatchIds(ids) > 0; return baseMapper.deleteBatchIds(ids) > 0;
} }
public Page<PmgSupplierProductsVo> querypagebyes(PmgSupplierProductsBo bo, PageQuery pageQuery) { public Page<PmgSupplierProductsVo> querypagebyes(PmgSupplierProductsBo bo, PageQuery pageQuery) {
// 执行查询 // // 执行查询
Page<PmgSupplierProductsVo> supplierProductsVOPage = new Page<>(pageQuery.getPageNum(), pageQuery.getPageSize()); // Page<PmgSupplierProductsVo> supplierProductsVOPage = new Page<>(pageQuery.getPageNum(), pageQuery.getPageSize());
List<PmgSupplierProductsVo> supplierProductsVOList =new ArrayList<>(); // List<PmgSupplierProductsVo> supplierProductsVOList =new ArrayList<>();
String productName = bo.getProductName(); // String productName = bo.getProductName();
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); // SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
SearchRequest searchRequest = new SearchRequest("pmg_supplier_products"); // SearchRequest searchRequest = new SearchRequest("pmg_supplier_products");
// //高亮器 // // //高亮器
HighlightBuilder highlightBuilder = new HighlightBuilder(); // HighlightBuilder highlightBuilder = new HighlightBuilder();
highlightBuilder.requireFieldMatch(false)//多字段时,需要设置为false//因为高亮查询默认是对查询字段即description就行高亮,可以关闭字段匹配,这样就可以对查询到的多个字段(前提是有关键词并且改字段可以分词)进行高亮显示 // highlightBuilder.requireFieldMatch(false)//多字段时,需要设置为false//因为高亮查询默认是对查询字段即description就行高亮,可以关闭字段匹配,这样就可以对查询到的多个字段(前提是有关键词并且改字段可以分词)进行高亮显示
.field("product_name")//若有关键字切可以分词,则可以高亮,写*可以匹配所有字段 // .field("product_name")//若有关键字切可以分词,则可以高亮,写*可以匹配所有字段
.field("product_specifications")//若有关键字切可以分词,则可以高亮,写*可以匹配所有字段 // .field("product_specifications")//若有关键字切可以分词,则可以高亮,写*可以匹配所有字段
.preTags("<span style=\"color: red;\">")//手动前缀标签 // .preTags("<span style=\"color: red;\">")//手动前缀标签
.postTags("</span>"); // .postTags("</span>");
searchSourceBuilder // searchSourceBuilder
.query(QueryBuilders.multiMatchQuery(productName, "product_name", "product_specifications")) // .query(QueryBuilders.multiMatchQuery(productName, "product_name", "product_specifications"))
.highlighter(highlightBuilder) // .highlighter(highlightBuilder)
.from(pageQuery.getPageNum()-1) //起始位置:start=(page-1)*size // .from(pageQuery.getPageNum()-1) //起始位置:start=(page-1)*size
.size(pageQuery.getPageSize()); //每页显示条数; // .size(pageQuery.getPageSize()); //每页显示条数;
//
searchRequest.source(searchSourceBuilder); // searchRequest.source(searchSourceBuilder);
try { // try {
SearchResponse response = client.search(searchRequest, RequestOptions.DEFAULT); // SearchResponse response = client.search(searchRequest, RequestOptions.DEFAULT);
// 解析结果 // // 解析结果
SearchHits hits = response.getHits(); // SearchHits hits = response.getHits();
//
//
supplierProductsVOPage.setTotal(response.getHits().getTotalHits().value); // supplierProductsVOPage.setTotal(response.getHits().getTotalHits().value);
SearchHit[] searchHits = hits.getHits(); // SearchHit[] searchHits = hits.getHits();
ObjectMapper mapper = new ObjectMapper(); // ObjectMapper mapper = new ObjectMapper();
for (SearchHit hit : searchHits) { // for (SearchHit hit : searchHits) {
String json =mapper.writeValueAsString(hit.getSourceAsMap()); // String json =mapper.writeValueAsString(hit.getSourceAsMap());
SupplierProductsDTO supplierProductsDTO = mapper.readValue(json, SupplierProductsDTO.class); // SupplierProductsDTO supplierProductsDTO = mapper.readValue(json, SupplierProductsDTO.class);
PmgSupplierProductsVo supplierProductsVO = new PmgSupplierProductsVo(); // PmgSupplierProductsVo supplierProductsVO = new PmgSupplierProductsVo();
BeanUtils.copyProperties(supplierProductsDTO,supplierProductsVO); // BeanUtils.copyProperties(supplierProductsDTO,supplierProductsVO);
if(hit.getHighlightFields().get("product_name")!=null){ // if(hit.getHighlightFields().get("product_name")!=null){
supplierProductsVO.setProductName(hit.getHighlightFields().get("product_name").getFragments()[0].toString()); // supplierProductsVO.setProductName(hit.getHighlightFields().get("product_name").getFragments()[0].toString());
//
} // }
if(hit.getHighlightFields().get("product_specifications")!=null){ // if(hit.getHighlightFields().get("product_specifications")!=null){
supplierProductsVO.setProductSpecifications(hit.getHighlightFields().get("product_specifications").getFragments()[0].toString()); // supplierProductsVO.setProductSpecifications(hit.getHighlightFields().get("product_specifications").getFragments()[0].toString());
//
} // }
supplierProductsVOList.add(supplierProductsVO); // supplierProductsVOList.add(supplierProductsVO);
} // }
supplierProductsVOPage.setRecords(supplierProductsVOList); // supplierProductsVOPage.setRecords(supplierProductsVOList);
return supplierProductsVOPage; // return supplierProductsVOPage;
} catch (Exception e) { // } catch (Exception e) {
throw new RuntimeException(e); // throw new RuntimeException(e);
} // }
return null;
} }
} }

Loading…
Cancel
Save