Browse Source

改了一些ES的链接方式,之前是有两种,现在改成一种了,但是有一块涉及到的参数比较多,没有完全修改,等有空再调整一下

release-1.0
jing.du 3 years ago
parent
commit
de289cffbc
  1. 2
      cl_search_api/pom.xml
  2. 3
      cl_search_api/src/main/java/com/bfd/mf/common/service/es/ParseSearchScopeService.java
  3. 22
      cl_search_api/src/main/java/com/bfd/mf/common/service/es/SubjectQueryDataService.java
  4. 2
      cl_search_api/src/main/java/com/bfd/mf/common/util/ESServerUtils.java
  5. 11
      cl_search_api/src/main/java/com/bfd/mf/common/util/es/EsUtils.java
  6. 15
      cl_search_api/src/main/java/com/bfd/mf/common/util/slice/SliceScrollUtil.java
  7. 16
      cl_search_api/src/main/java/com/bfd/mf/service/SearchAuthorService.java
  8. 483
      cl_search_api/src/main/java/com/bfd/mf/service/SearchDataService.java
  9. 6
      cl_search_api/src/main/java/com/bfd/mf/service/UpdateService.java
  10. 37
      cl_search_api/src/main/resources/application.yml

2
cl_search_api/pom.xml

@ -13,7 +13,7 @@
<name>cl_search_api</name>
<description>Search V3.2 API</description>
<artifactId>cl_search_api</artifactId>
<version>3.2.4-SNAPSHOT</version>
<version>3.2.5-SNAPSHOT</version>

3
cl_search_api/src/main/java/com/bfd/mf/common/service/es/ParseSearchScopeService.java

@ -55,7 +55,8 @@ public class ParseSearchScopeService {
public static BoolQueryBuilder getSearchTypeQuery(Integer searchType) {
BoolQueryBuilder searchScopeQuery = null;
if(searchType == 0 ){ //0:主贴;1:评论;2:用户 || ES primary=1为主贴
searchScopeQuery = QueryBuilders.boolQuery().must(QueryBuilders.termQuery(ESConstant.PRIMARY, 1));
searchScopeQuery = QueryBuilders.boolQuery().must(QueryBuilders.termQuery(ESConstant.PRIMARY,
1));
} else if(searchType == 1){
searchScopeQuery = QueryBuilders.boolQuery()
.should(QueryBuilders.termQuery(ESConstant.PRIMARY, 0))

22
cl_search_api/src/main/java/com/bfd/mf/common/service/es/SubjectQueryDataService.java

@ -7,6 +7,7 @@ import com.bfd.mf.common.util.constants.ESConstant;
import com.bfd.mf.common.util.thread.SubjectDataQueryThread;
import com.bfd.mf.common.web.entity.mysql.cache.Cluster;
import com.bfd.mf.common.web.vo.params.QueryRequest;
import com.bfd.mf.config.BFDApiConfig;
import com.bfd.nlp.common.util.string.TStringUtils;
import org.elasticsearch.action.search.SearchRequestBuilder;
import org.elasticsearch.action.search.SearchResponse;
@ -38,6 +39,9 @@ public class SubjectQueryDataService {
private Logger logger = LoggerFactory.getLogger(SubjectQueryDataService.class);
private static final Long ONE_DAY = 60 * 60 * 1000L * 24;
@Autowired
private BFDApiConfig bfdApiConfig;
@Autowired
private TopicQueryService topicQueryService;
@Autowired
@ -156,4 +160,22 @@ public class SubjectQueryDataService {
return new ArrayList<>(set);
}
/**
* 现在用这个方法
* @param subjectIds
* @return
*/
public List<String> getIndexBySubjectIds(String subjectIds) {
Set<String> set = new HashSet<>();
if(subjectIds.contains(",")){
for(String subjectId :subjectIds.split(",")){
set.add(bfdApiConfig.getIndexNamePre() + subjectId);
}
}else {
String subjectId = subjectIds;
set.add(bfdApiConfig.getIndexNamePre() + subjectId);
}
return new ArrayList<>(set);
}
}

2
cl_search_api/src/main/java/com/bfd/mf/common/util/ESServerUtils.java

@ -42,7 +42,7 @@ import java.util.Map;
*/
@Component
public class ESServerUtils implements Serializable {
private static Logger logger = LoggerFactory.getLogger(ESServerUtils.class);
private final static Logger logger = LoggerFactory.getLogger(ESServerUtils.class);
private static final long serialVersionUID = 1L;
private static Map<Long, TransportClient> clientByClusterId = new HashMap<>();
@Autowired

11
cl_search_api/src/main/java/com/bfd/mf/common/util/es/EsUtils.java

@ -241,11 +241,16 @@ public abstract class EsUtils {
.setQuery(queryBuilder)
.addAggregation(aggregation);
// System.out.println(requestBuilder);
System.out.println(requestBuilder);
Aggregations aggregations = requestBuilder.get().getAggregations();
Cardinality cardinality = aggregations.get(count);
// System.out.println("1111 : "+cardinality.getValue());
return cardinality.getValue();
System.out.println("1111 : " + cardinality.getValue());
System.out.println("2222 : " + requestBuilder.get().getHits().totalHits);
long resultCount = cardinality.getValue();
if(searchType == 2){
resultCount = requestBuilder.get().getHits().totalHits;
}
return resultCount;
}

15
cl_search_api/src/main/java/com/bfd/mf/common/util/slice/SliceScrollUtil.java

@ -1,6 +1,5 @@
package com.bfd.mf.common.util.slice;
import com.bfd.mf.common.service.es.ClusterService;
import com.bfd.mf.common.service.es.SubjectQueryDataService;
import com.bfd.mf.common.util.constants.ESConstant;
import com.bfd.mf.common.web.entity.mysql.cache.Cluster;
@ -25,8 +24,6 @@ import java.util.stream.Collectors;
public class SliceScrollUtil {
private static final Logger logger = LoggerFactory.getLogger(SliceScrollUtil.class);
@Autowired
private ClusterService clusterService;
@Autowired
private SubjectQueryDataService subjectQueryDataService;
/**
@ -131,12 +128,12 @@ public class SliceScrollUtil {
List<String> currentIndexList = null;
if(null != queryRequest.getSubjectId() && !("all").equals(queryRequest.getSubjectId())){
logger.info("查询 【专题数据】 subjectId :{}" ,queryRequest.getSubjectId());
cluster = clusterService.findClusterByType(Cluster.CLUSTER_TYPE.special_cluster_type);
currentIndexList = subjectQueryDataService.getIndexBySubjectIds(cluster, queryRequest.getSubjectId());
}else{
logger.info("[SliceScrollUtil] fetchResultSubjectCache : 查询 【全局数据】");
cluster = clusterService.findClusterByType(Cluster.CLUSTER_TYPE.special_cluster_type);
currentIndexList = subjectQueryDataService.getIndexListByTimeRange(cluster, queryRequest.getStartTime(),queryRequest.getEndTime());
//cluster = clusterService.findClusterByType(Cluster.CLUSTER_TYPE.special_cluster_type);
currentIndexList = subjectQueryDataService.getIndexBySubjectIds( queryRequest.getSubjectId());
// }else{
// logger.info("[SliceScrollUtil] fetchResultSubjectCache : 查询 【全局数据】");
// cluster = clusterService.findClusterByType(Cluster.CLUSTER_TYPE.special_cluster_type);
// currentIndexList = subjectQueryDataService.getIndexListByTimeRange(queryRequest.getStartTime(),queryRequest.getEndTime());
}
Long clusterId = cluster.getId();

16
cl_search_api/src/main/java/com/bfd/mf/service/SearchAuthorService.java

@ -2,7 +2,6 @@ package com.bfd.mf.service;
import com.alibaba.fastjson.JSONObject;
import com.bfd.mf.common.service.common.CrudService;
import com.bfd.mf.common.service.es.ClusterService;
import com.bfd.mf.common.service.es.EsQueryAuthorCountService;
import com.bfd.mf.common.service.es.EsQueryAuthorService;
import com.bfd.mf.common.service.es.SubjectQueryDataService;
@ -13,6 +12,7 @@ import com.bfd.mf.common.web.repository.mysql.SentimentRepository;
import com.bfd.mf.common.web.repository.mysql.base.SiteRepository;
import com.bfd.mf.common.web.vo.params.QueryRequest;
import com.bfd.mf.common.web.vo.view.monitor.ESMonitorEntity;
import com.bfd.mf.config.BFDApiConfig;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@ -28,7 +28,7 @@ import java.util.Map;
public class SearchAuthorService extends CrudService<SentimentModify, SentimentRepository> implements Serializable {
private static Logger logger = LoggerFactory.getLogger(SearchAuthorService.class);
@Autowired
private ClusterService clusterService;
private BFDApiConfig bfdApiConfig;
@Autowired
private SubjectQueryDataService subjectQueryDataService;
@Autowired
@ -75,8 +75,8 @@ public class SearchAuthorService extends CrudService<SentimentModify, SentimentR
public JSONObject queryAuthorByAuthorId(QueryRequest queryRequest) {
JSONObject jsonObject = new JSONObject();
try {
Cluster cluster = clusterService.findClusterByType(Cluster.CLUSTER_TYPE.mini_cluster_type);
String indexName = cluster.getPrefixIndexPattern() +"_"+ queryRequest.getSubjectId();
//Cluster cluster = clusterService.findClusterByType(Cluster.CLUSTER_TYPE.mini_cluster_type);
String indexName = bfdApiConfig.getIndexNamePre()+ queryRequest.getSubjectId();
String[] indexNames = {indexName};
List<JSONObject> dataList = esQueryAuthorService.queryAuthorByAuthorId(indexNames, queryRequest);
jsonObject = parseAuthorMessage(dataList);
@ -135,8 +135,8 @@ public class SearchAuthorService extends CrudService<SentimentModify, SentimentR
public JSONObject queryContentsByAuthorId(QueryRequest queryRequest) {
JSONObject jsonObject = new JSONObject();
try {
Cluster cluster = clusterService.findClusterByType(Cluster.CLUSTER_TYPE.mini_cluster_type);
String indexName = cluster.getPrefixIndexPattern()+ "_" + queryRequest.getSubjectId();
// Cluster cluster = clusterService.findClusterByType(Cluster.CLUSTER_TYPE.mini_cluster_type);
String indexName =bfdApiConfig.getIndexNamePre()+ queryRequest.getSubjectId();
String indexNames[] = {indexName};
List<JSONObject> dataList = esQueryAuthorService.queryContentsByAuthorId(indexNames, queryRequest);
List<ESMonitorEntity> esMonitorEntityLists = new ArrayList<>();
@ -280,8 +280,8 @@ public class SearchAuthorService extends CrudService<SentimentModify, SentimentR
}
private String[] getIndexNames(QueryRequest queryRequest) {
Cluster cluster = clusterService.findClusterByType(Cluster.CLUSTER_TYPE.mini_cluster_type); // 111
List<String> currentIndexList = subjectQueryDataService.getIndexBySubjectIds(cluster, queryRequest.getSubjectId());
// Cluster cluster = clusterService.findClusterByType(Cluster.CLUSTER_TYPE.mini_cluster_type); // 111
List<String> currentIndexList = subjectQueryDataService.getIndexBySubjectIds( queryRequest.getSubjectId());
String[] indexName = currentIndexList.toArray(new String[currentIndexList.size()]);
return indexName;
}

483
cl_search_api/src/main/java/com/bfd/mf/service/SearchDataService.java
File diff suppressed because it is too large
View File

6
cl_search_api/src/main/java/com/bfd/mf/service/UpdateService.java

@ -2,7 +2,6 @@ package com.bfd.mf.service;
import com.alibaba.fastjson.JSONObject;
import com.bfd.mf.common.service.common.CrudService;
import com.bfd.mf.common.service.es.ClusterService;
import com.bfd.mf.common.util.ESServerUtils;
import com.bfd.mf.common.util.es.EsUtils;
import com.bfd.mf.common.web.entity.mysql.SentimentModify;
@ -29,8 +28,6 @@ public class UpdateService extends CrudService<SentimentModify, SentimentReposit
@Autowired
private BFDApiConfig bfdApiConfig;
@Autowired
private ClusterService clusterService;
@Autowired
private ESServerUtils esServerUtils;
private String clusterName ="";
@ -60,8 +57,7 @@ public class UpdateService extends CrudService<SentimentModify, SentimentReposit
List<String> currentIndexList = new ArrayList<>();
// 如果是专题去专题的索引查就行
if(!("").equals(subjectId) && null != subjectId){
cluster = clusterService.findClusterByType(Cluster.CLUSTER_TYPE.mini_cluster_type);
subjectId = cluster.getPrefixIndexPattern() +"_"+ subjectId;
subjectId = bfdApiConfig.getIndexNamePre()+ subjectId;
}
currentIndexList.add(subjectId);
Map<String, Object> params = new HashMap<>(16);

37
cl_search_api/src/main/resources/application.yml

@ -1,5 +1,5 @@
server:
port: 18909
port: 18902
tomcat:
uri-encoding: UTF-8
max-threads: 800
@ -15,12 +15,16 @@ server:
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
username: crawl
password: crawl123
url: jdbc:mysql://172.18.1.134:3306/intelligent_crawl?useSSL=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
# username: crawl
# password: crawl123
# url: jdbc:mysql://172.18.1.134:3306/intelligent_crawl?useSSL=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
# username: root
# password: bfd123
# url: jdbc:mysql://172.26.11.113:3306/intelligent_crawl?useSSL=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
username: crawl
password: crawl123
url: jdbc:mysql://172.26.11.110:3306/intelligent_crawl?useSSL=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
hikari:
maximum-pool-size: 10
minimum-idle: 1
@ -46,16 +50,31 @@ bfd.api.mf:
uploadZipPath : /opt/nfsdata/uploadFiles/
indexNamePre : cl_major_
es-mini:
name: SQ_Mini_2
address: 172.18.1.81:9301
upper: 2018-09-01
standby: cl_major_*
# es-mini:
# name: CL_Mini_2
# address: 172.18.1.81:9301
# upper: 2018-09-01
# standby: cl_major_*
es-normal:
name: SQ_Normal_new
address: 172.18.1.134:9301
upper: 2018-09-01
standby: cl_index_*
# es-mini: #这个是自己部署的6.8.23 的ES
# name: my-application
# address: 172.16.10.39:9300
# upper: 2018-09-01
# standby: cl_major_*
# es-mini: # 这个是庆鹏那边搞的 6.8.13 且需要用户验证的
# name: elasticsearch
# address: 172.16.10.42:9300
# upper: 2018-09-01
# standby: cl_major_*
es-mini: # 这个是28赛博项目阿里云上的ES
name: crawl
address: 47.254.148.208:9300
upper: 2018-09-01
standby: cl_major_*
# es-mini:

Loading…
Cancel
Save