BaseService.java 2.27 KB
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;
	}
}