|
@@ -1,29 +1,42 @@
|
|
|
package com.pavis.app.saasbacken.service.impl.other;
|
|
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
+import com.alibaba.fastjson.JSONArray;
|
|
|
import com.pavis.app.saasbacken.dao.ResourceLibraryEntityMapper;
|
|
|
+import com.pavis.app.saasbacken.dao.ResourceLibraryMapper;
|
|
|
import com.pavis.app.saasbacken.entity.EnterpriseBasicInfo;
|
|
|
+import com.pavis.app.saasbacken.entity.ResourceLibrary;
|
|
|
import com.pavis.app.saasbacken.entity.ResourceLibraryEntity;
|
|
|
+import com.pavis.app.saasbacken.form.TaxParam;
|
|
|
import com.pavis.app.saasbacken.service.EsService;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.lucene.search.join.ScoreMode;
|
|
|
+import org.elasticsearch.action.bulk.BulkRequest;
|
|
|
+import org.elasticsearch.action.bulk.BulkResponse;
|
|
|
+import org.elasticsearch.action.index.IndexRequest;
|
|
|
import org.elasticsearch.action.search.SearchRequest;
|
|
|
import org.elasticsearch.action.search.SearchResponse;
|
|
|
import org.elasticsearch.client.RequestOptions;
|
|
|
import org.elasticsearch.client.RestHighLevelClient;
|
|
|
import org.elasticsearch.common.unit.TimeValue;
|
|
|
+import org.elasticsearch.common.xcontent.XContentType;
|
|
|
import org.elasticsearch.index.query.BoolQueryBuilder;
|
|
|
+import org.elasticsearch.index.query.QueryBuilder;
|
|
|
import org.elasticsearch.index.query.QueryBuilders;
|
|
|
import org.elasticsearch.search.builder.SearchSourceBuilder;
|
|
|
import org.elasticsearch.search.sort.SortOrder;
|
|
|
import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.beans.factory.annotation.Qualifier;
|
|
|
+import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import java.io.IOException;
|
|
|
import java.util.ArrayList;
|
|
|
+import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.concurrent.TimeUnit;
|
|
|
|
|
|
/**
|
|
|
* @program:
|
|
@@ -35,8 +48,8 @@ import java.util.List;
|
|
|
@Service
|
|
|
public class EsServiceImpl implements EsService {
|
|
|
|
|
|
- @Autowired
|
|
|
- private RestHighLevelClient restHighLevelClient;
|
|
|
+ @Value("${elasticsearch.indexname}")
|
|
|
+ private String indexName;
|
|
|
|
|
|
@Autowired
|
|
|
@Qualifier("restHighLevelClient")
|
|
@@ -45,6 +58,9 @@ public class EsServiceImpl implements EsService {
|
|
|
@Autowired
|
|
|
private ResourceLibraryEntityMapper resourceLibraryEntityMapper;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private ResourceLibraryMapper resourceLibraryMapper;
|
|
|
+
|
|
|
@Override
|
|
|
public SearchResponse findByAannualRevenue() throws IOException {
|
|
|
|
|
@@ -108,7 +124,7 @@ public class EsServiceImpl implements EsService {
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public List<EnterpriseBasicInfo> selEsByName(String name) {
|
|
|
+ public List<EnterpriseBasicInfo> selEsByName(String name) throws IOException {
|
|
|
List<ResourceLibraryEntity> byNames = resourceLibraryEntityMapper.findByName(name);
|
|
|
EnterpriseBasicInfo enterpriseBasicInfo;
|
|
|
List<EnterpriseBasicInfo> enterpriseBasicInfos = new ArrayList<>();
|
|
@@ -118,6 +134,84 @@ public class EsServiceImpl implements EsService {
|
|
|
BeanUtils.copyProperties(byName,enterpriseBasicInfo);
|
|
|
enterpriseBasicInfos.add(enterpriseBasicInfo);
|
|
|
}
|
|
|
+
|
|
|
+ // 检索mysql数据,并同步至es库。
|
|
|
+ // QueryWrapper<ResourceLibrary> queryWrapper = new QueryWrapper<>();
|
|
|
+ // queryWrapper.lambda()
|
|
|
+ // .isNotNull(ResourceLibrary::getId);
|
|
|
+ // List<ResourceLibrary> resourceLibraryList = resourceLibraryMapper.selectList(queryWrapper);
|
|
|
+ // System.err.println("mysql reslib:" + JSON.toJSONString(resourceLibraryList));
|
|
|
+ // mysqlToEs(resourceLibraryList);
|
|
|
return enterpriseBasicInfos;
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List mysqlToEs(List<ResourceLibrary> resourceLibraryList) throws IOException {
|
|
|
+ log.info("当前索引名称:{}",indexName);
|
|
|
+
|
|
|
+ // 批量导入es库。
|
|
|
+ BulkRequest bulkRequest = new BulkRequest();
|
|
|
+ bulkRequest.timeout("10000s");
|
|
|
+
|
|
|
+ // 批处理请求。
|
|
|
+ for (int i = 0; i < resourceLibraryList.size(); i++) {
|
|
|
+ ResourceLibraryEntity resourceLibraryEntity = new ResourceLibraryEntity();
|
|
|
+ BeanUtils.copyProperties(resourceLibraryList.get(i),resourceLibraryEntity);
|
|
|
+ resourceLibraryEntity.setAnnualRevenue(JSONArray.parseArray
|
|
|
+ (resourceLibraryList.get(i).getAnnualRevenue(), TaxParam.class));
|
|
|
+ resourceLibraryEntity.setRdDeductible(JSONArray.parseArray
|
|
|
+ (resourceLibraryList.get(i).getRdDeductible(),TaxParam.class));
|
|
|
+ System.err.println("to es entity:" + JSON.toJSONString(resourceLibraryEntity));
|
|
|
+ bulkRequest.add(
|
|
|
+ // new IndexRequest(indexName)
|
|
|
+ new IndexRequest(indexName)
|
|
|
+ // .source(JSON.toJSONString(resourceLibraryList.get(i)), XContentType.JSON)
|
|
|
+ .source(JSON.toJSONString(resourceLibraryEntity), XContentType.JSON)
|
|
|
+ );
|
|
|
+ }
|
|
|
+ BulkResponse bulkResp = client.bulk(bulkRequest, RequestOptions.DEFAULT);
|
|
|
+ System.err.println(bulkResp.hasFailures()); // 是否失败,返回false 代表成功。
|
|
|
+ Map<String,Object> resMap = new HashMap<>();
|
|
|
+ if (false == bulkResp.hasFailures()){
|
|
|
+ resMap.put("mes","save to es succ...");
|
|
|
+ }else {
|
|
|
+ resMap.put("mes","save to es failed...");
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void searchByName() throws IOException {
|
|
|
+ String key = "name";
|
|
|
+ String val = "苏州";
|
|
|
+ log.info("key:{},val:{}", key, val);
|
|
|
+ SearchRequest searchRequest = new SearchRequest(indexName);
|
|
|
+ // SearchRequest searchRequest = new SearchRequest("es_dome");
|
|
|
+ // 构建搜索条件
|
|
|
+ SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
|
|
|
+
|
|
|
+ // 查询条件,用QueryBuilders实现
|
|
|
+ // QueryBuilders.termQuery 精确查找
|
|
|
+ // TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery(key, val);
|
|
|
+
|
|
|
+ // QueryBuilders.matchAllQuery() 匹配所有。
|
|
|
+ // MatchAllQueryBuilder matchAllQueryBuilder = QueryBuilders.matchAllQuery();
|
|
|
+
|
|
|
+ // 根据关键词查询
|
|
|
+ QueryBuilder queryBuilder = QueryBuilders.queryStringQuery(val);
|
|
|
+
|
|
|
+
|
|
|
+ Integer page = 1;
|
|
|
+ // Integer rows = 3568;
|
|
|
+ Integer rows = 3;
|
|
|
+ searchSourceBuilder.from((page - 1) * rows);
|
|
|
+ searchSourceBuilder.size(rows);
|
|
|
+
|
|
|
+ searchSourceBuilder.query(queryBuilder);
|
|
|
+ searchSourceBuilder.timeout(new TimeValue(600, TimeUnit.SECONDS));
|
|
|
+
|
|
|
+ searchRequest.source(searchSourceBuilder);
|
|
|
+
|
|
|
+ SearchResponse searchResp = client.search(searchRequest, RequestOptions.DEFAULT);
|
|
|
+ System.out.println("search total:" + searchResp.getHits().getTotalHits().value);
|
|
|
+ }
|
|
|
}
|