Commit 5c71cc03 by 赵剑炜

修改查询规则

parent a2f0fe75
......@@ -12,6 +12,7 @@ public class EquipmentTypeDto {
private String id;
private String name;
private String nickName;
private String unit;
private String unitType;
private String parentId;
......
......@@ -16,6 +16,8 @@ public class QueryEquipmentTypeReq {
private String code;
private String parentId;
private Integer type;
private String searchType;
private String typeName;
private String nickName;
}
......@@ -22,6 +22,7 @@ public class UpdateEquipmentTypeReq {
@NotBlank(message = "名称不能为空", groups = {ValidationApi.edit.class, ValidationApi.add.class})
private String name;
private String nickName;
private String note;
@NotBlank(message = "上级不能为空", groups = {ValidationApi.edit.class, ValidationApi.add.class})
private String parentId;
......
......@@ -33,7 +33,11 @@ public class EquipmentType implements Serializable {
*/
@ApiModelProperty(value = "类型名称")
private String name;
/**
* 类型名称
*/
@ApiModelProperty(value = "别名")
private String nickName;
/**
* 单位
*/
......
......@@ -288,7 +288,7 @@ public class EquipmentTypeServiceImpl extends ServiceImpl<EquipmentTypeMapper, E
ElasticsearchUtil es=new ElasticsearchUtil<>(client);
// 先从ES中拿到检索数据
List<EquipmentType> searchResults = es.searchEntities("type_pinyin","name",0, 50,req.getType(), req.getTypeName(),EquipmentType.class);
List<EquipmentType> searchResults = es.searchEntities("type_pinyin",req.getNickName(),"name",0, 50,req.getType(), req.getTypeName(), req.getSearchType(), EquipmentType.class);
LambdaQueryWrapper<EquipmentType> wp = this.createWrapper(req);
// 获取所有组织机构数据
List<EquipmentType> allTypes = this.list(wp);
......
package com.junmp.jyzb.utils;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
......@@ -26,7 +27,7 @@ public class ElasticsearchUtil<T> {
this.client = client;
}
public List<T> searchEntities(String typeName,String index, Integer pageNum, Integer pageSize,Integer type, String keyword, Class<T> entityClass) throws IOException {
public List<T> searchEntities(String typeName,String nickName, String index, Integer pageNum, Integer pageSize,Integer type, String keyword,String searchType, Class<T> entityClass) throws IOException {
if (pageNum < 0) pageNum = 0;
SearchRequest request = new SearchRequest(typeName);
......@@ -34,13 +35,29 @@ public class ElasticsearchUtil<T> {
builder.from(pageNum);
builder.size(pageSize);
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
// MatchQueryBuilder matchQueryBuilder=new MatchQueryBuilder();
if (searchType.equals("normal"))
{
MatchQueryBuilder matchQueryBuilder = QueryBuilders.matchQuery(index, keyword).operator(Operator.AND);
boolQueryBuilder = QueryBuilders.boolQuery();
boolQueryBuilder.should(matchQueryBuilder);
builder.query(boolQueryBuilder);
} else if (searchType.equals("match")) {
MatchQueryBuilder matchQueryBuilder = QueryBuilders.matchQuery(index, keyword).operator(Operator.OR);
boolQueryBuilder = QueryBuilders.boolQuery();
MatchQueryBuilder matchQueryBuilder = QueryBuilders.matchQuery(index, keyword).operator(Operator.AND);
// MatchQueryBuilder matchQueryBuilder2 = QueryBuilders.matchQuery(index+".pinyin", keyword).operator(Operator.AND);
boolQueryBuilder.should(matchQueryBuilder);
builder.query(boolQueryBuilder);
}
// 如果 nickName 不为空,则同时匹配 nickName 和 typeName
if (StringUtils.isNotBlank(nickName)) {
MatchQueryBuilder nickNameQueryBuilder = QueryBuilders.matchQuery("nickName", nickName).operator(Operator.AND);
boolQueryBuilder.should(nickNameQueryBuilder);
}
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
boolQueryBuilder.should(matchQueryBuilder);
// boolQueryBuilder.should(matchQueryBuilder2);
if (typeName.equals("orgName"))
{
builder.postFilter(new TermQueryBuilder("delFlag", 1));
......@@ -49,7 +66,7 @@ public class ElasticsearchUtil<T> {
builder.postFilter(new TermQueryBuilder("type",type));
}
builder.query(boolQueryBuilder);
builder.timeout(new TimeValue(60, TimeUnit.SECONDS));
request.source(builder);
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论