爱吃糖的靓仔 2020-08-28 09:56 采纳率: 50%
浏览 136
已结题

es 模糊查询默认

一个param字段如何支持多值模糊查询, 最好能把结果代码给我贴出来


下面的代码是这样的 类似是这样的 select * from table where param like '%www%' or email like '%email%'

我想把改为 select * from table where param like '%www%' or param like '%email%' 这样的语句,该如何修改

  • 写回答

13条回答 默认 最新

  • 爱吃糖的靓仔 2020-08-28 09:57
    关注
    这个是目前的代码  他只是一对一 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();
        }
    
    
    评论

报告相同问题?