提交 277a8964 作者: yanxin

高级查询支持排除关键词组

上级 9a8476aa
...@@ -577,7 +577,7 @@ public class ReportDataController { ...@@ -577,7 +577,7 @@ public class ReportDataController {
builder2.must(QueryBuilders.termsQuery(field + ".keyword", val.split(" |\\+|,|,|;|;"))); builder2.must(QueryBuilders.termsQuery(field + ".keyword", val.split(" |\\+|,|,|;|;")));
} else if ("not_in".equals(rule)) { } else if ("not_in".equals(rule)) {
builder2.mustNot(QueryBuilders.termsQuery(field + ".keyword", val.split(" |\\+|,|,|;|;"))); builder2.mustNot(QueryBuilders.termsQuery(field + ".keyword", val.split(" |\\+|,|,|;|;")));
} else if ("keyWordsGroup".equals(rule)) { } else if (StringUtils.isNotEmpty(rule) && rule.contains("keyWordsGroup")) {
if (StringUtils.isNotEmpty(val)) { if (StringUtils.isNotEmpty(val)) {
BoolQueryBuilder wordAllBoolQuery = QueryBuilders.boolQuery(); BoolQueryBuilder wordAllBoolQuery = QueryBuilders.boolQuery();
String[] andWords = val.split("\\+"); String[] andWords = val.split("\\+");
...@@ -589,7 +589,11 @@ public class ReportDataController { ...@@ -589,7 +589,11 @@ public class ReportDataController {
} }
wordAllBoolQuery.must(wordOrBoolQuery); wordAllBoolQuery.must(wordOrBoolQuery);
} }
builder2.must(wordAllBoolQuery); if(rule.startsWith("not_")){
builder2.mustNot(wordAllBoolQuery);
}else{
builder2.must(wordAllBoolQuery);
}
} }
} }
} else if ("string".equals(type)) { //文本类查询 } else if ("string".equals(type)) { //文本类查询
...@@ -599,7 +603,7 @@ public class ReportDataController { ...@@ -599,7 +603,7 @@ public class ReportDataController {
builder2.must(fullTextBoolQuery); builder2.must(fullTextBoolQuery);
} else if ("not_like".equals(rule)) { } else if ("not_like".equals(rule)) {
builder2.mustNot(fullTextBoolQuery); builder2.mustNot(fullTextBoolQuery);
} else if ("keyWordsGroup".equals(rule)) { } else if (StringUtils.isNotEmpty(rule) && rule.contains("keyWordsGroup")) {
BoolQueryBuilder wordAllBoolQuery = QueryBuilders.boolQuery(); BoolQueryBuilder wordAllBoolQuery = QueryBuilders.boolQuery();
String[] andWords = val.split("\\+"); String[] andWords = val.split("\\+");
for (String words : andWords) { for (String words : andWords) {
...@@ -610,7 +614,11 @@ public class ReportDataController { ...@@ -610,7 +614,11 @@ public class ReportDataController {
} }
wordAllBoolQuery.must(wordOrBoolQuery); wordAllBoolQuery.must(wordOrBoolQuery);
} }
builder2.must(wordAllBoolQuery); if(rule.startsWith("not_")){
builder2.mustNot(wordAllBoolQuery);
}else{
builder2.must(wordAllBoolQuery);
}
} }
} else if ("eq".equals(rule)) { } else if ("eq".equals(rule)) {
builder2.must(QueryBuilders.termQuery(field + ".keyword", val)); builder2.must(QueryBuilders.termQuery(field + ".keyword", val));
...@@ -624,7 +632,7 @@ public class ReportDataController { ...@@ -624,7 +632,7 @@ public class ReportDataController {
builder2.must(QueryBuilders.matchPhrasePrefixQuery(field, val)); builder2.must(QueryBuilders.matchPhrasePrefixQuery(field, val));
} else if ("not_like".equals(rule)) { } else if ("not_like".equals(rule)) {
builder2.mustNot(QueryBuilders.matchPhrasePrefixQuery(field, val)); builder2.mustNot(QueryBuilders.matchPhrasePrefixQuery(field, val));
} else if ("keyWordsGroup".equals(rule)) { } else if (StringUtils.isNotEmpty(rule) && rule.contains("keyWordsGroup")) {
BoolQueryBuilder wordAllBoolQuery = QueryBuilders.boolQuery(); BoolQueryBuilder wordAllBoolQuery = QueryBuilders.boolQuery();
String[] andWords = val.split("\\+"); String[] andWords = val.split("\\+");
for (String words : andWords) { for (String words : andWords) {
...@@ -635,7 +643,11 @@ public class ReportDataController { ...@@ -635,7 +643,11 @@ public class ReportDataController {
} }
wordAllBoolQuery.must(wordOrBoolQuery); wordAllBoolQuery.must(wordOrBoolQuery);
} }
builder2.must(wordAllBoolQuery); if(rule.startsWith("not_")){
builder2.mustNot(wordAllBoolQuery);
}else{
builder2.must(wordAllBoolQuery);
}
} }
} }
if ("or".equals(superQueryMatchType)) { if ("or".equals(superQueryMatchType)) {
......
...@@ -2759,7 +2759,7 @@ public class EsService { ...@@ -2759,7 +2759,7 @@ public class EsService {
builder2.must(QueryBuilders.termsQuery(field + ".keyword", val.split(" |\\+|,|,|;|;"))); builder2.must(QueryBuilders.termsQuery(field + ".keyword", val.split(" |\\+|,|,|;|;")));
} else if ("not_in".equals(rule)) { } else if ("not_in".equals(rule)) {
builder2.mustNot(QueryBuilders.termsQuery(field + ".keyword", val.split(" |\\+|,|,|;|;"))); builder2.mustNot(QueryBuilders.termsQuery(field + ".keyword", val.split(" |\\+|,|,|;|;")));
} else if ("keyWordsGroup".equals(rule)) { } else if (StringUtils.isNotEmpty(rule) && rule.contains("keyWordsGroup")) {
if (StringUtils.isNotEmpty(val)) { if (StringUtils.isNotEmpty(val)) {
BoolQueryBuilder wordAllBoolQuery = QueryBuilders.boolQuery(); BoolQueryBuilder wordAllBoolQuery = QueryBuilders.boolQuery();
String[] andWords = val.split("\\+"); String[] andWords = val.split("\\+");
...@@ -2771,7 +2771,11 @@ public class EsService { ...@@ -2771,7 +2771,11 @@ public class EsService {
} }
wordAllBoolQuery.must(wordOrBoolQuery); wordAllBoolQuery.must(wordOrBoolQuery);
} }
builder2.must(wordAllBoolQuery); if(rule.startsWith("not_")){
builder2.mustNot(wordAllBoolQuery);
}else{
builder2.must(wordAllBoolQuery);
}
} }
} }
} else if ("string".equals(type)) { //文本类查询 } else if ("string".equals(type)) { //文本类查询
...@@ -2781,7 +2785,7 @@ public class EsService { ...@@ -2781,7 +2785,7 @@ public class EsService {
builder2.must(fullTextBoolQuery); builder2.must(fullTextBoolQuery);
} else if ("not_like".equals(rule)) { } else if ("not_like".equals(rule)) {
builder2.mustNot(fullTextBoolQuery); builder2.mustNot(fullTextBoolQuery);
} else if ("keyWordsGroup".equals(rule)) { } else if (StringUtils.isNotEmpty(rule) && rule.contains("keyWordsGroup")) {
BoolQueryBuilder wordAllBoolQuery = QueryBuilders.boolQuery(); BoolQueryBuilder wordAllBoolQuery = QueryBuilders.boolQuery();
String[] andWords = val.split("\\+"); String[] andWords = val.split("\\+");
for (String words : andWords) { for (String words : andWords) {
...@@ -2792,7 +2796,11 @@ public class EsService { ...@@ -2792,7 +2796,11 @@ public class EsService {
} }
wordAllBoolQuery.must(wordOrBoolQuery); wordAllBoolQuery.must(wordOrBoolQuery);
} }
builder2.must(wordAllBoolQuery); if(rule.startsWith("not_")){
builder2.mustNot(wordAllBoolQuery);
}else{
builder2.must(wordAllBoolQuery);
}
} }
} else if ("eq".equals(rule)) { } else if ("eq".equals(rule)) {
builder2.must(QueryBuilders.termQuery(field + ".keyword", val)); builder2.must(QueryBuilders.termQuery(field + ".keyword", val));
...@@ -2806,7 +2814,7 @@ public class EsService { ...@@ -2806,7 +2814,7 @@ public class EsService {
builder2.must(QueryBuilders.matchPhrasePrefixQuery(field, val)); builder2.must(QueryBuilders.matchPhrasePrefixQuery(field, val));
} else if ("not_like".equals(rule)) { } else if ("not_like".equals(rule)) {
builder2.mustNot(QueryBuilders.matchPhrasePrefixQuery(field, val)); builder2.mustNot(QueryBuilders.matchPhrasePrefixQuery(field, val));
} else if ("keyWordsGroup".equals(rule)) { } else if (StringUtils.isNotEmpty(rule) && rule.contains("keyWordsGroup")) {
BoolQueryBuilder wordAllBoolQuery = QueryBuilders.boolQuery(); BoolQueryBuilder wordAllBoolQuery = QueryBuilders.boolQuery();
String[] andWords = val.split("\\+"); String[] andWords = val.split("\\+");
for (String words : andWords) { for (String words : andWords) {
...@@ -2817,7 +2825,11 @@ public class EsService { ...@@ -2817,7 +2825,11 @@ public class EsService {
} }
wordAllBoolQuery.must(wordOrBoolQuery); wordAllBoolQuery.must(wordOrBoolQuery);
} }
builder2.must(wordAllBoolQuery); if(rule.startsWith("not_")){
builder2.mustNot(wordAllBoolQuery);
}else{
builder2.must(wordAllBoolQuery);
}
} }
} }
if ("or".equals(superQueryMatchType)) { if ("or".equals(superQueryMatchType)) {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论