一个param字段如何支持多值模糊查询, 最好能把结果代码给我贴出来
下面的代码是这样的 类似是这样的 select * from table where param like '%www%' or email like '%email%'
我想把改为 select * from table where param like '%www%' or param like '%email%' 这样的语句,该如何修改
一个param字段如何支持多值模糊查询, 最好能把结果代码给我贴出来
下面的代码是这样的 类似是这样的 select * from table where param like '%www%' or email like '%email%'
我想把改为 select * from table where param like '%www%' or param like '%email%' 这样的语句,该如何修改
这个是目前的代码 他只是一对一 key 值进行搜索
public NativeSearchQuery getNativeSearchQuery (ProcessLog condition,PageParam pageParam){
Sort sortBy = Sort.by(CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL, pageParam.getSortCondition())).descending();
if (StringUtils.equalsIgnoreCase("asc", pageParam.getSortModel())) {
sortBy = sortBy.ascending();
}
Pageable pageable = PageRequest.of(pageParam.getPageNum() - 1, pageParam.getPageSize(), sortBy);
if (StringUtils.isEmpty(pageParam.getSortCondition())) {
pageParam.setSortCondition("requestTime");
}
BoolQueryBuilder boolQueryBuilder = boolQuery();
NativeSearchQueryBuilder nativeSearchQueryBuilder = new NativeSearchQueryBuilder().withPageable(pageable)
.withQuery(boolQueryBuilder);
if(StringUtils.isNotEmpty(condition.getUser())){
boolQueryBuilder.must(matchPhraseQuery("user", condition.getUser()));
}
if(StringUtils.isNotEmpty(condition.getRequestUri())){
boolQueryBuilder.must(matchPhraseQuery("requestUri", condition.getRequestUri()));
}
if(StringUtils.isNotEmpty(condition.getParams())){
boolQueryBuilder.must(matchPhraseQuery("params", condition.getParams()));
boolQueryBuilder.must(boolQueryBuilder.should(multiMatchQuery("params", condition.getParams())))
}
// if(StringUtils.isNotEmpty(condition.getEmail())){
// boolQueryBuilder.must(matchPhraseQuery("email", condition.getEmail()));
// }
//
if(StringUtils.isNotEmpty(condition.getPeerId())){
boolQueryBuilder.must(matchPhraseQuery("peerId", condition.getPeerId()));
}
if(StringUtils.isNotEmpty(condition.getServerName())){
boolQueryBuilder.must(termQuery("serverName.keyword", condition.getServerName()));
}
if(condition.getStatus() != null){
boolQueryBuilder.must(termQuery("status", condition.getStatus()));
}
if(StringUtils.isNotEmpty(condition.getMethod())){
boolQueryBuilder.must(matchPhraseQuery("method", condition.getMethod()));
}
if(condition.getStartTime() != null && condition.getEndTime() != null ){
boolQueryBuilder.must(
rangeQuery("requestTime")
.gte(condition.getStartTime())
.lt(condition.getEndTime())
);
}
return nativeSearchQueryBuilder.build();
}