1.pom.xml添加
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>transport</artifactId>
<version>5.6.9</version>
<exclusions>
<exclusion>
<artifactId>log4j-core</artifactId>
<groupId>org.apache.logging.log4j</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<artifactId>log4j-core</artifactId>
<groupId>org.apache.logging.log4j</groupId>
<version>${log4j-core-version}</version>
</dependency>
<dependency>
<groupId>org.elasticsearch.plugin</groupId>
<artifactId>transport-netty4-client</artifactId>
<version>5.6.9</version>
<exclusions>
<exclusion>
<artifactId>log4j-core</artifactId>
<groupId>org.apache.logging.log4j</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>5.6.9</version>
</dependency>
2.application.yml添加
elasticsearch:
index: shehuizuzhi_test3
cluster-name: es6.3
cluster-ip: xxx.xxx.com
cluster-port: 9331
cluster-nodes: xxx.xxx.com:9221
local: false
repositories:
enabled: true
3.Controller
package com.zkdj.api.controller;
import cn.hutool.core.util.StrUtil;
import com.zkdj.api.bean.secondary.PageVO;
import com.zkdj.api.entity.SheHuiZuZhiEntity;
import com.zkdj.api.service.ESInfoService;
import com.zkdj.api.vo.SheHuiZuZhiVo;
import com.zkdj.common.bean.CommonResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
/**
* ES下的 协会/渠道 模块接口
*/
@Api("ES->AssociationController")
@RestController
@RequestMapping("/api/es/association")
public class ESController {
@Autowired
private ESInfoService eSInfoService;
/**
* 渠道/社会组织
* @Description 获取渠道/社会组织列表
* @param vo
* @return
*/
@ApiOperation(value = "ES渠道/社会组织列表", httpMethod = "POST")
@RequestMapping("list/V2")
public CommonResult serachList(@RequestBody SheHuiZuZhiVo vo) {
try {
PageVO<SheHuiZuZhiEntity> pageVO = this.eSInfoService.searchList(vo);
return CommonResult.success(pageVO);
} catch (Exception ex) {
ex.printStackTrace();
}
return CommonResult.failed("系统错误!");
}
/**
* 单个省渠道数据
* @param vo 查询条件
* @param field 统计字段
* @return
*/
@ApiOperation("渠道区域统计图")
@PostMapping("/one/{field}")
public CommonResult one(@RequestBody SheHuiZuZhiVo vo, @ApiParam(value = "统计维度")@PathVariable(name = "field") String field){
try {
List<String[]> data = eSInfoService.aggrBidinfo(vo,field);
List<List<String>> dataMap=new ArrayList<>();//地图
if (vo.getSheng()==null||vo.getSheng()==""){
for (int i = 0; i < data.size(); i++) {
String key1 = data.get(i)[0];
String value1 = data.get(i)[1];
//地图
if (key1.equals("-")) continue;
List<String> kv=new ArrayList<>();
kv.add(key1);
kv.add(value1);
dataMap.add(kv);
}
}else{
for (int i = 0; i < data.size(); i++) {
SheHuiZuZhiVo bidVo = new SheHuiZuZhiVo();
bidVo.setSheng(vo.getSheng());
PageVO<SheHuiZuZhiEntity> pageVO = this.eSInfoService.SHZZSearchList(bidVo);
List<String> kv=new ArrayList<>();
// if (data.get(i)[0].equals(vo.getSheng().replaceAll("市","").replaceAll("省",""))){
if (data.get(i)[0].equals(vo.getSheng())){
kv.add(data.get(i)[0]);
kv.add(pageVO.getTotal()+"");
//地图
dataMap.add(kv);
}
}
}
return CommonResult.success(dataMap);
} catch (Exception e) {
e.printStackTrace();
return CommonResult.failed();
}
}
/**
* 渠道产业统计图
* @param vo 查询条件
* @param field 统计字段
* @return
*/
@ApiOperation("渠道产业统计图")
@PostMapping("/pieIndustry/{field}")
public CommonResult pieIndustry(@RequestBody SheHuiZuZhiVo vo, @ApiParam(value = "统计维度")@PathVariable(name = "field") String field){
try {
List<String[]> data = eSInfoService.aggrBidinfo(vo,field);
List<List<String>> dataMap=new ArrayList<>();//地图
if (vo.getQdcy()==null||vo.getQdcy()==""){
for (int i = 0; i < data.size(); i++) {
String key1 = data.get(i)[0];
String value1 = data.get(i)[1];
//地图
if (key1.equals("-")||key1.contains(",")) continue;
List<String> kv=new ArrayList<>();
kv.add(key1);
kv.add(value1);
dataMap.add(kv);
}
}else{
for (int i = 0; i < data.size(); i++) {
SheHuiZuZhiVo bidVo = new SheHuiZuZhiVo();
bidVo.setQdcy(vo.getQdcy());
PageVO<SheHuiZuZhiEntity> pageVO = this.eSInfoService.SHZZSearchList(bidVo);
List<String> kv=new ArrayList<>();
// if (data.get(i)[0].equals(vo.getSheng().replaceAll("市","").replaceAll("省",""))){
if (data.get(i)[0].equals(vo.getSheng())){
kv.add(data.get(i)[0]);
kv.add(pageVO.getTotal()+"");
//地图
dataMap.add(kv);
}
}
}
return CommonResult.success(dataMap);
} catch (Exception e) {
e.printStackTrace();
return CommonResult.failed();
}
}
/**
* 渠道类型统计图
* @param vo 查询条件
* @return
*/
@ApiOperation("渠道类型统计图")
@PostMapping("/pieType/{field}")
public CommonResult pieType(@RequestBody SheHuiZuZhiVo vo, @ApiParam(value = "统计维度")@PathVariable(name = "field") String field){
try {
List<String[]> data = eSInfoService.aggrBidinfo(vo,field);
List<List<String>> dataMap=new ArrayList<>();//地图
if (vo.getQdlx()==null||vo.getQdlx()==""){
for (int i = 0; i < data.size(); i++) {
String key1 = data.get(i)[0];
String value1 = data.get(i)[1];
//地图
if (key1.equals("-")) continue;
List<String> kv=new ArrayList<>();
kv.add(key1);
kv.add(value1);
dataMap.add(kv);
}
}else{
for (int i = 0; i < data.size(); i++) {
SheHuiZuZhiVo bidVo = new SheHuiZuZhiVo();
bidVo.setQdlx(vo.getQdlx());
PageVO<SheHuiZuZhiEntity> pageVO = this.eSInfoService.SHZZSearchList(bidVo);
List<String> kv=new ArrayList<>();
if (data.get(i)[0].equals(vo.getQdlx())){
kv.add(data.get(i)[0]);
kv.add(pageVO.getTotal()+"");
dataMap.add(kv);
}
}
}
return CommonResult.success(dataMap);
} catch (Exception e) {
e.printStackTrace();
return CommonResult.failed();
}
}
/**
* 渠道分布
* @param vo 查询条件
* @param field 统计字段
* @return
*/
@ApiOperation("渠道分布")
@PostMapping("/groupByField/{field}")
public CommonResult groupByField(@RequestBody SheHuiZuZhiVo vo, @ApiParam(value = "统计维度")@PathVariable(name = "field") String field){
try {
List<String[]> data = eSInfoService.aggrBidinfo(vo,field);
List<List<String>> dataMap=new ArrayList<>();//地图
if (vo.getQdlx()==null||vo.getQdlx()=="") {
for (int i = 0; i < data.size(); i++) {
String key1 = data.get(i)[0];
String value1 = data.get(i)[1];
//地图
if (key1.equals("-")) continue;
List<String> kv = new ArrayList<>();
kv.add(key1);
kv.add(value1);
dataMap.add(kv);
}
}
return CommonResult.success(dataMap);
} catch (Exception e) {
e.printStackTrace();
return CommonResult.failed();
}
}
/**
* 协会详情信息
*
* @return
*/
@ApiOperation(value = "协会详情",httpMethod = "POST")
@PostMapping("queryDetails")
public CommonResult queryDetails(@RequestParam(value = "id") String id) {
if ("".equals(id) || StrUtil.isBlank(id)) {
return CommonResult.validateFailed("id错误!");
}
try {
return CommonResult.success(eSInfoService.getByIds(id));
// return CommonResult.success(this.biddingService.queryBiddingById(id));
} catch (Exception ex) {
ex.printStackTrace();
}
return CommonResult.failed("查询异常");
}
}
4.ServiceImpl
package com.zkdj.api.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.zkdj.api.bean.secondary.PageVO;
import com.zkdj.api.entity.SheHuiZuZhiEntity;
import com.zkdj.api.service.ESInfoService;
import com.zkdj.api.vo.SheHuiZuZhiVo;
import com.zkdj.common.bean.CommonPage;
import com.zkdj.common.bean.CommonResult;
import com.zkdj.common.bean.EnterpriseEntity;
import com.zkdj.common.util.ConstantUtils;
import com.zkdj.common.util.StringUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchRequestBuilder;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.text.Text;
import org.elasticsearch.common.unit.TimeValue;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.IdsQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.aggregations.AggregationBuilders;
import org.elasticsearch.search.aggregations.bucket.terms.Terms;
import org.elasticsearch.search.aggregations.bucket.terms.TermsAggregationBuilder;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder;
import org.elasticsearch.search.fetch.subphase.highlight.HighlightField;
import org.elasticsearch.search.sort.SortOrder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
@SuppressWarnings("all")
@Service
@Slf4j
public class ESInfoServiceImpl implements ESInfoService {
@Value("${elasticsearch.index}")
private String INDEX;
private final String TYPE = "info";
@Autowired
private TransportClient transportClient;
@Override
public PageVO<SheHuiZuZhiEntity> searchList(SheHuiZuZhiVo vo) {
BoolQueryBuilder bq = getSearchBuilder(vo);
PageVO<Object> pager = null;
int num = vo.getPageNumber() >= 1 ? vo.getPageNumber() : 1;
int size = vo.getPageSize() > 0 ? vo.getPageSize() : 10;
pager = new PageVO<>();
pager.setPageNumber(num);
pager.setPageSize(size);
if (StringUtils.isNotBlank(vo.getEstablishTimeSort())&&StringUtils.isNotBlank(vo.getEstablishTimeSortType())) {
pager.setOrderBy(vo.getEstablishTimeSort());
pager.setOrderWay(vo.getEstablishTimeSortType());
}else if (StringUtils.isNotBlank(vo.getRegisteredCapitalSort())&&StringUtils.isNotBlank(vo.getRegisteredCapitalSortType())) {
pager.setOrderBy(vo.getRegisteredCapitalSort());
pager.setOrderWay(vo.getRegisteredCapitalSortType());
}
return getPageVO(bq, pager);
}
/**
* 封装查询条件
* @param vo
* @return
*/
private BoolQueryBuilder getSearchBuilder(SheHuiZuZhiVo vo){
BoolQueryBuilder bq = new BoolQueryBuilder();
PageVO<Object> pager = null;
//省
if (StringUtils.isNotBlank(vo.getSheng()) && !vo.getSheng().equals("0") && !vo.getSheng().equals("全部")) {
bq.filter(QueryBuilders.termQuery("sheng.keyword", vo.getSheng()));
}
// 根据产业信息
if (StringUtils.isNotBlank(vo.getQdcy())) {
if(!"全部".equals(vo.getQdcy())){
List<String> industry = new ArrayList<>();
industry.add(vo.getQdcy().replace("产业",""));
industry.add(vo.getQdcy());
if (!vo.getQdcy().contains(",|,")) {industry.add(vo.getQdcy()+",");industry.add(","+vo.getQdcy());};
bq.filter(QueryBuilders.termsQuery("qdcy.keyword", industry));
}else{
bq.must(QueryBuilders.existsQuery("qdcy.keyword"));
}
}
// 根据名称模糊查找
String names = vo.getName();
if (StringUtils.isNotBlank(names)) {
BoolQueryBuilder bool = new BoolQueryBuilder();
bool.should(QueryBuilders.matchPhraseQuery("name", names));
bq.filter(bool);
}
//渠道类型
if (StringUtils.isNotBlank(vo.getQdlx())) {
bq.filter(QueryBuilders.termQuery("qdlx.keyword", vo.getQdlx()));
}
return bq;
}
@Override
public Map<String,Object> statBid() {
SearchRequest searchRequest = new SearchRequest("newbidinfoservers").types("bidinfos");
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
// TermsAggregationBuilder aggregationBuilder = AggregationBuilders.terms("province").field("entityProvince").size(Integer.MAX_VALUE);
TermsAggregationBuilder aggregationBuilder = AggregationBuilders.terms("group").field("area.keyword").size(Integer.MAX_VALUE);
searchSourceBuilder.aggregation(aggregationBuilder);
searchRequest.source(searchSourceBuilder);
try {
log.info(searchRequest.toString());
SearchResponse searchResponse = transportClient.search(searchRequest).get();
Terms terms = searchResponse.getAggregations().get("group");
List<Terms.Bucket> buckets = (List<Terms.Bucket>) terms.getBuckets();
Map<String,Object> map=new HashMap<>();
buckets.forEach(x->{
map.put(x.getKeyAsString(),x.getDocCount());
});
return map;
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
return null;
}
/**
* 获取渠道列表
* @param vo
* @return
*/
@Override
public PageVO<SheHuiZuZhiEntity> SHZZSearchList(SheHuiZuZhiVo vo) {
BoolQueryBuilder bq = new BoolQueryBuilder();
//省
if (StringUtils.isNotBlank(vo.getSheng()) && !vo.getSheng().equals("0") && !vo.getSheng().equals("全部")) {
bq.filter(QueryBuilders.termQuery("sheng.keyword", vo.getSheng()));
}
//渠道类型
if (StringUtils.isNotBlank(vo.getQdlx())) {
bq.filter(QueryBuilders.termQuery("qdlx.keyword", vo.getQdlx()));
}
//时间
// String time = vo.getEstablishTime();
// if (time != null && StringUtils.isNotEmpty(time)) {
// String beginDate = vo.getEstablishTime();
// String endDate = vo.getEstablishTime();
// bq.filter(QueryBuilders.rangeQuery("publishTime").from(beginDate).to(endDate));
// }
// 根据产业信息
if (StringUtils.isNotBlank(vo.getQdcy())) {
if(!"全部".equals(vo.getQdcy())){
List<String> industry = new ArrayList<>();
industry.add(vo.getQdcy().replace("产业",""));
industry.add(vo.getQdcy());
bq.filter(QueryBuilders.termsQuery("qdcy.keyword", industry));
}else{
bq.must(QueryBuilders.existsQuery("qdcy.keyword"));
}
}
// 根据名称模糊查找
String names = vo.getName();
if (StringUtils.isNotBlank(names)) {
BoolQueryBuilder bool = new BoolQueryBuilder();
bool.should(QueryBuilders.matchPhraseQuery("name", names));
bq.filter(bool);
}
PageVO<Object> pager = new PageVO<>();
int num = vo.getPageNumber() >= 1 ? vo.getPageNumber() : 1;
int size = vo.getPageSize() > 0 ? vo.getPageSize() : 10;
pager.setPageNumber(num);
pager.setPageSize(size);
if (StringUtils.isNotBlank(vo.getEstablishTimeSort())&&StringUtils.isNotBlank(vo.getEstablishTimeSortType())) {
pager.setOrderBy(vo.getEstablishTimeSort());
pager.setOrderWay(vo.getEstablishTimeSortType());
}else if (StringUtils.isNotBlank(vo.getRegisteredCapitalSort())&&StringUtils.isNotBlank(vo.getRegisteredCapitalSortType())) {
pager.setOrderBy(vo.getRegisteredCapitalSort());
pager.setOrderWay(vo.getRegisteredCapitalSortType());
}
return getPageVO(bq, pager);
}
/**
* 企业的投资企业分布统计
* @param vo
* @param field
* @return
*/
public List<String[]> aggrBidinfo(SheHuiZuZhiVo vo, String field){
SearchRequest searchRequest = new SearchRequest(INDEX).types(TYPE);
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
TermsAggregationBuilder aggregationBuilder = AggregationBuilders.terms("group").field(field+".keyword").size(100);
aggregationBuilder.minDocCount(1L);
aggregationBuilder.size(100);
aggregationBuilder.showTermDocCountError(true);
sourceBuilder.aggregation(aggregationBuilder);
//核心查询条件
BoolQueryBuilder boolQueryBuilder = getSearchBuilder(vo);
long allStart = System.currentTimeMillis();
SearchResponse response = null;
sourceBuilder.query(boolQueryBuilder).size(0);
try {
searchRequest.source(sourceBuilder);
response = transportClient.search(searchRequest).actionGet();
Terms terms = response.getAggregations().get("group");
List<String[]> data = new ArrayList<>();
for (Terms.Bucket bucket : terms.getBuckets()) {
String key = bucket.getKeyAsString();
if(StringUtils.isNotBlank(key)){
// key = StringUtils.isNotBlank(ConstantUtils.LongMap.get(key))? ConstantUtils.LongMap.get(key):key;
String count = bucket.getDocCount()+"";
data.add(new String[]{key,count});
}else{
key = "-";
String count = bucket.getDocCount()+"";
data.add(new String[]{key,count});
}
}
long allEnd = System.currentTimeMillis();
log.info("aggrCompany time:{}",(allEnd - allStart));
return data;
} catch (Exception e) {
e.printStackTrace();
}
return new ArrayList<>();
}
private PageVO<SheHuiZuZhiEntity> getPageVO(BoolQueryBuilder bq, PageVO<Object> pager) {
try {
int num = 1;
int size = 10;
if (pager.getPageNumber() >= 1 && pager.getPageSize() > 0) {
num = pager.getPageNumber();
size = pager.getPageSize();
}
//关键词高亮
HighlightBuilder highlightBuilder = new HighlightBuilder();
highlightBuilder.preTags("<font style='color:red;'>");
highlightBuilder.postTags("</font>");
highlightBuilder.field("name");
// highlightBuilder.field("content");
// highlightBuilder.field("entryName");
SearchRequest searchRequest = new SearchRequest(INDEX).types(TYPE);
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
TermsAggregationBuilder aggregationBuilder = AggregationBuilders.terms("group").field("name.keyword").size(100);
sourceBuilder.aggregation(aggregationBuilder);
sourceBuilder.highlighter(highlightBuilder);
sourceBuilder.query(bq);
sourceBuilder.from(num == 1 ? 0 : (num - 1) * size);
sourceBuilder.size(size);
if (null != pager && StringUtils.isNotBlank(pager.getOrderWay())) {
if ("DESC".equals(pager.getOrderWay().toUpperCase())) {
sourceBuilder.sort(pager.getOrderBy(), SortOrder.DESC);
} else if ("ASC".equals(pager.getOrderWay().toUpperCase())) {
sourceBuilder.sort(pager.getOrderBy(), SortOrder.ASC);
} else {
sourceBuilder.sort(pager.getOrderBy(), SortOrder.DESC);
}
}
searchRequest.source(sourceBuilder);
SearchResponse response = transportClient.search(searchRequest).get();
List<SheHuiZuZhiEntity> list = new ArrayList<>();
for (SearchHit hit : response.getHits()) {
SheHuiZuZhiEntity entity = JSON.parseObject(hit.getSourceAsString(), SheHuiZuZhiEntity.class);
// 获取高亮内容
// String[] fields = {"title", "content", "entryName"};
String[] fields = {"name"};
JSONObject object = new JSONObject();
Map<String, HighlightField> highlightFields = hit.getHighlightFields();
for (String field : fields) {
HighlightField highlightField = highlightFields.get(field);
if (null != highlightField) {
Text[] texts = highlightField.getFragments();
String content = "";
for (Text text : texts) {
content += text;
}
StringUtil.reflectChangeObjByValue(entity, field, content); //修改指定对象值
object.put(field, content);
}
}
if (!object.isEmpty()) {
entity.setHighlight(object);
}
list.add(entity);
}
long count = response.getHits().getTotalHits();
PageVO<SheHuiZuZhiEntity> pageVo = new PageVO<SheHuiZuZhiEntity>();
pageVo.setRows(list);
pageVo.setTotal(count);
pageVo.setPageSize(size);
pageVo.setPageNumber(num);
return pageVo;
} catch (Exception e) {
e.printStackTrace();
return new PageVO<>();
}
}
@Override
public Object getByIds(String ids) {
SearchRequestBuilder searchRequestBuilder = transportClient.prepareSearch(INDEX);
IdsQueryBuilder idsQueryBuilder = QueryBuilders.idsQuery().addIds(ids.split(","));
try {
SearchResponse searchResponse = searchRequestBuilder.setQuery(idsQueryBuilder).execute().get();
SearchHit[] hits = searchResponse.getHits().getHits();
List list=new ArrayList();
for(SearchHit item : hits) {
list.add(item.getSourceAsMap());
}
return list;
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
return null;
}
}
5.工具类
package com.zkdj.api.bean.secondary;
import lombok.Data;
import org.springframework.data.domain.Page;
import java.io.Serializable;
import java.util.List;
/**
* Created by gq
* 将Page转为可序列化的VO对象
*/
@Data
public class PageVO<T> implements Serializable{
/**
*
*/
private static final long serialVersionUID = 4787516962616799705L;
public PageVO(Page<T> page){
this.rows=page.getContent();
this.total=page.getTotalElements();
this.pageNumber=page.getNumber();
this.pageSize=page.getSize();
this.totalPage=page.getTotalPages();
}
public PageVO(){
}
private List<T> rows;
private long total;
private int totalPage;
private Integer pageNumber;
private Integer pageSize;
private String orderBy;
private String orderWay;
private Object params; //查询的条件参数
private String scrollId;
}
/**
* Copyright (C), 2015-2018, XXX有限公司
* FileName: EnterpriseEntity_back
* Author: 邓杰
* Date: 2020-03-20
* Description: 企业基本数据
* version: v1.1
*/
package com.zkdj.api.vo;
import com.zkdj.api.bean.secondary.PageVO;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
* 社会组织/渠道
*/
@Data
public class SheHuiZuZhiVo extends PageVO implements Serializable,Cloneable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("社会信用代码")
private String id;//社会信用代码
@ApiModelProperty("社会组织名称")
private String name;//社会组织名称 --
@ApiModelProperty("采集网址")
private String siteUrl;//
@ApiModelProperty("状态")
private Integer status;//
@ApiModelProperty("官网")
private String url;//官网
@ApiModelProperty("组织标识")
private String identification;//组织标识
@ApiModelProperty("登记管理机关")
private String registration;//登记管理机关
@ApiModelProperty("业务主管单位")
private String business;//业务主管单位
@ApiModelProperty("法定代表人")
private String representative;//法定代表人
@ApiModelProperty("成立登记日期")
private String establishTime;//成立登记日期
@ApiModelProperty("注册资金")
private String registered_capital;//注册资金
@ApiModelProperty("登记状态")
private String registration_status;//登记状态
@ApiModelProperty("民政部登记:登记证号")
private String register_num;//民政部登记:登记证号
@ApiModelProperty("社会组织类型")
private String organizations_type;//社会组织类型
@ApiModelProperty("住所")
private String address;//住所
@ApiModelProperty("地方登记:证书有效期")
private String zhengshuyouxiao;//地方登记:证书有效期
@ApiModelProperty("地方登记:业务范围")
private String yewu;//地方登记:业务范围
@ApiModelProperty("组织类型")
private String zuzhileixing;//组织类型
@ApiModelProperty("省(高德API获取)")
private String sheng;//省(高德API获取)--
@ApiModelProperty("市(高德API获取)")
private String shi;//市(高德API获取)
@ApiModelProperty("区(高德API获取)")
private String qu;//区(高德API获取)
@ApiModelProperty("经纬度(高德API获取)")
private String jingweidu;//经纬度(高德API获取)
@ApiModelProperty("渠道类型")
private String qdlx;//渠道类型 --
@ApiModelProperty("渠道产业(name字段匹配关键词)")
private String qdcy;//渠道产业(name字段匹配关键词)
@ApiModelProperty("渠道产业链(所属产业链,name字段匹配关键词)")
private String sscy_chain;//渠道产业链(所属产业链,name字段匹配关键词)
@ApiModelProperty("渠道类型")
private String qd_type;//
@ApiModelProperty("存入es时间")
private String insert_time;//存入es时间
@ApiModelProperty("成立时间排序字段")
private String establishTimeSort;//成立时间排序字段
@ApiModelProperty("成立时间排序字段类型")
private String establishTimeSortType;//成立时间排序字段类型
@ApiModelProperty("注册资金排序字段")
private String registeredCapitalSort;//注册资金排序字段 --
@ApiModelProperty("注册资金排序字段类型")
private String registeredCapitalSortType;//注册资金排序字段类型 --
}
/**
* Copyright (C), 2015-2018, XXX有限公司
* FileName: EnterpriseEntity_back
* Author: 邓杰
* Date: 2020-03-20
* Description: 企业基本数据
* version: v1.1
*/
package com.zkdj.api.entity;
import com.alibaba.fastjson.JSONObject;
import lombok.Data;
import java.io.Serializable;
/**
* 社会组织/渠道
*/
@Data
public class SheHuiZuZhiEntity implements Serializable {
private static final long serialVersionUID = 1L;
private String id;//社会信用代码
private String name;//社会组织名称
private String siteUrl;//
private Integer status;//
private String url;//官网
private String identification;//组织标识
private String registration;//登记管理机关
private String business;//业务主管单位
private String representative;//法定代表人
private String establishTime;//成立登记日期
private String registered_capital;//注册资金
private String registration_status;//登记状态
private String register_num;//民政部登记:登记证号
private String organizations_type;//社会组织类型
private String address;//住所
private String zhengshuyouxiao;//地方登记:证书有效期
private String yewu;//地方登记:业务范围
private String zuzhileixing;//组织类型
private String sheng;//省(高德API获取)
private String shi;//市(高德API获取)
private String qu;//区(高德API获取)
private String jingweidu;//经纬度(高德API获取)
private String qdlx;//渠道类型
private String qdcy;//渠道产业(name字段匹配关键词)
private String sscy_chain;//渠道产业链(所属产业链,name字段匹配关键词)
private String qd_type;//
private String insert_time;//存入es时间
private String registered_capital_sort;//注册资金排序
private JSONObject highlight;//关键字高亮块
}
package com.zkdj.common.bean;
import lombok.Data;
import java.io.Serializable;
/**
* 通用返回对象
*/
@Data
public class CommonResult<T> implements Serializable {
private static final long serialVersionUID = 5190371721822680303L;
/**
* 状态码
*/
private int code;
/**
* 提示信息
*/
private String message;
/**
* 数据封装
*/
private T data;
public CommonResult(int code, String message, T data) {
this.code = code;
this.message = message;
this.data = data;
}
/**
* 返回成功信息
*
* @return
*/
public static <T> CommonResult<T> success() {
return new CommonResult<T>(ResultCode.SUCCESS.getCode(), ResultCode.SUCCESS.getMessage(), null);
}
public static <T> CommonResult<T> success(T data) {
return new CommonResult<T>(ResultCode.SUCCESS.getCode(), ResultCode.SUCCESS.getMessage(), data);
}
public static <T> CommonResult<T> success(String message, T data) {
return new CommonResult<T>(ResultCode.SUCCESS.getCode(), message, data);
}
/**
* 返回失败信息
*
* @return
*/
public static <T> CommonResult<T> failed() {
return new CommonResult<T>(ResultCode.FAILED.getCode(), ResultCode.FAILED.getMessage(), null);
}
public static <T> CommonResult<T> failed(String message) {
return new CommonResult<T>(ResultCode.FAILED.getCode(), message, null);
}
/**
* 返回参数校验失败信息
*
* @return
*/
public static <T> CommonResult<T> validateFailed() {
return new CommonResult<T>(ResultCode.VALIDATE_FAILED.getCode(), ResultCode.VALIDATE_FAILED.getMessage(), null);
}
public static <T> CommonResult<T> validateFailed(String message) {
return new CommonResult<T>(ResultCode.VALIDATE_FAILED.getCode(), message, null);
}
public static <T> CommonResult<T> forbidden() {
return new CommonResult<T>(ResultCode.FORBIDDEN.getCode(), ResultCode.FORBIDDEN.getMessage(), null);
}
}
6.ES链接
package com.zkdj.api.config;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.sort.SortOrder;
import org.elasticsearch.transport.client.PreBuiltTransportClient;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.net.InetAddress;
import java.net.UnknownHostException;
@Configuration
public class ElasticsearchConfig {
@Value("${elasticsearch.cluster-name}")
public String clusterName;
@Value("${elasticsearch.cluster-ip}")
public String clusterIp;
@Value("${elasticsearch.cluster-port}")
public int clusterPort;
@Bean(name = "transportClient")
public TransportClient transportClient() throws UnknownHostException {
Settings settings = Settings.builder()
.put("cluster.name", clusterName)
.build();
// TransportClient client = new PreBuiltTransportClient(settings);
// client.addTransportAddress(new TransportAddress(InetAddress.getByName(clusterIp), clusterPort));
TransportClient client = new PreBuiltTransportClient(settings);
client.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(clusterIp), clusterPort));
try {
SearchResponse searchResponse = client.prepareSearch("cars").addSort("price", SortOrder.ASC).setSize(10).execute().get();
SearchHit[] hits = searchResponse.getHits().getHits();
for (int i = 0; i < hits.length; i++) {
System.out.println(hits[i].getSourceAsMap());
}
} catch (Exception e) {
e.printStackTrace();
}
return client;
}
}
参考链接:https://blog.csdn.net/qq_44886213/article/details/123425024