BaseService.java
2.27 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
package com.yoho.search.common;
import java.util.Map;
import org.apache.commons.lang.StringUtils;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.springframework.beans.factory.annotation.Autowired;
import com.yoho.search.base.utils.ConvertUtils;
import com.yoho.search.service.helper.SearchParamHelper;
import com.yoho.search.service.helper.SearchSortHelper;
/**
* Created by wangnan on 2016/12/16.
*/
public class BaseService {
/**
* 增加一个termsQuery
*/
protected BoolQueryBuilder boolQueryTermsQuery(Map<String, String> paramMap, BoolQueryBuilder boolFilter, String fieldName) {
if (paramMap.containsKey(fieldName) && StringUtils.isNotBlank(paramMap.get(fieldName))) {
int[] values = ConvertUtils.stringToIntArray(paramMap.get(fieldName), ",");
boolFilter.must(QueryBuilders.termsQuery(fieldName, values));
}
return boolFilter;
}
/**
* 增加一个termQuery
*/
protected BoolQueryBuilder boolQueryTermQuery(Map<String, String> paramMap, BoolQueryBuilder boolFilter, String fieldName) {
if (paramMap.containsKey(fieldName) && StringUtils.isNotBlank(paramMap.get(fieldName))) {
boolFilter.must(QueryBuilders.termQuery(fieldName, paramMap.get(fieldName)));
}
return boolFilter;
}
/**
* 通用的过滤请求
*/
protected BoolQueryBuilder generalHandler(Map<String, String> paramMap, BoolQueryBuilder boolFilter) {
for (String key : paramMap.keySet()) {
if (key.startsWith("not_")) {
String[] values = paramMap.get(key).split(",");
boolFilter.mustNot(QueryBuilders.termsQuery(key.substring(4, key.length()), values));
}
if (key.startsWith("filter_")) {
String field = key.substring(7, key.length());
boolFilter.must(QueryBuilders.termsQuery(field, paramMap.get(key).split(",")));
}
if (key.startsWith("missing_")) {
String field = key.substring(8, key.length());
boolFilter.mustNot(QueryBuilders.existsQuery(field));
}
}
if (boolFilter.hasClauses()) {
return boolFilter;
} else {
return null;
}
}
protected int getPage(Map<String, String> paramMap) {
int page = StringUtils.isBlank(paramMap.get("page")) ? 1 : Integer.parseInt(paramMap.get("page"));
return page;
}
}