Ver código fonte

es 查询 null 参数解析为“”,is null 等条件暂时未加

huangzhiyong 6 anos atrás
pai
commit
4e0ff9e003

+ 12 - 0
commons/commons-data-elasticsearch/src/main/java/com/yihu/ehr/elasticsearch/ElasticSearchUtil.java

@ -698,11 +698,17 @@ public class ElasticSearchUtil {
                BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery();
                BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery();
                for (String filed : fields) {
                for (String filed : fields) {
                    String [] condition = filed.split("=");
                    String [] condition = filed.split("=");
                    if ("null".equals(condition[1])) {
                        condition[1] ="";
                    }
                    queryBuilder.should(QueryBuilders.termQuery(condition[0], condition[1]));
                    queryBuilder.should(QueryBuilders.termQuery(condition[0], condition[1]));
                }
                }
                boolQueryBuilder.must(queryBuilder);
                boolQueryBuilder.must(queryBuilder);
            } else if (filter.contains("?")) {
            } else if (filter.contains("?")) {
                String [] condition = filter.split("\\?");
                String [] condition = filter.split("\\?");
                if ("null".equals(condition[1])) {
                    condition[1] ="";
                }
                MatchQueryBuilder matchQueryBuilder = QueryBuilders.matchPhraseQuery(condition[0], condition[1]);
                MatchQueryBuilder matchQueryBuilder = QueryBuilders.matchPhraseQuery(condition[0], condition[1]);
                boolQueryBuilder.must(matchQueryBuilder);
                boolQueryBuilder.must(matchQueryBuilder);
            } else if (filter.contains("<>")) {
            } else if (filter.contains("<>")) {
@ -712,6 +718,9 @@ public class ElasticSearchUtil {
                    TermsQueryBuilder termsQueryBuilder = QueryBuilders.termsQuery(condition[0], inCondition);
                    TermsQueryBuilder termsQueryBuilder = QueryBuilders.termsQuery(condition[0], inCondition);
                    boolQueryBuilder.mustNot(termsQueryBuilder);
                    boolQueryBuilder.mustNot(termsQueryBuilder);
                } else {
                } else {
                    if ("null".equals(condition[1])) {
                        condition[1] ="";
                    }
                    TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery(condition[0], condition[1]);
                    TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery(condition[0], condition[1]);
                    boolQueryBuilder.mustNot(termQueryBuilder);
                    boolQueryBuilder.mustNot(termQueryBuilder);
                }
                }
@ -742,6 +751,9 @@ public class ElasticSearchUtil {
                    TermsQueryBuilder termsQueryBuilder = QueryBuilders.termsQuery(condition[0], inCondition);
                    TermsQueryBuilder termsQueryBuilder = QueryBuilders.termsQuery(condition[0], inCondition);
                    boolQueryBuilder.must(termsQueryBuilder);
                    boolQueryBuilder.must(termsQueryBuilder);
                } else {
                } else {
                    if ("null".equals(condition[1])) {
                        condition[1] = "";
                    }
                    TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery(condition[0], condition[1]);
                    TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery(condition[0], condition[1]);
                    boolQueryBuilder.must(termQueryBuilder);
                    boolQueryBuilder.must(termQueryBuilder);
                }
                }