ilter.forEach(
(key, match) -> {
Map<String, String> matchEntityMap = new HashMap<>();
Map<String, Map> matchMap = new HashMap<>();
Map<String, Map> subMatchMap = new HashMap<>();
matchEntityMap.put(Constant.query, match.getQuery());
matchEntityMap.put(Constant.should_minum, match.getMinimumShouldMatch());
matchMap.put(key, matchEntityMap);
subMatchMap.put(Constant.match, matchMap);
mustList.add(subMatchMap);
});
}
boolMap.put(Constant.must, mustList);
if (!mustNotList.isEmpty())
boolMap.put(Constant.mustNot, mustNotList);
if (!shouldList.isEmpty()) {
// 有 minimum_should_match 不带过滤器
boolMap.put(Constant.should, shouldList);
boolMap.put(Constant.should_minum, shouldMatchMinimum);
queryMap.put(Constant.bool, boolMap);
}
else {
if (isNeedFilterLayer) {
filterMap.put(Constant.bool, boolMap);
filteredMap.put(Constant.filter, filterMap);
queryMap.put(Constant.filtered, filteredMap);
}
else {
queryMap.put(Constant.bool, boolMap);
}
}
finalQuery.put(Constant.query, queryMap);
Map<String, Object> orderMap = new HashMap<>();
Map<String, Object> orderItem = new HashMap<>();
if(order != null && orderBy != null){
orderItem.put(Constant.order, this.order);
orderMap.put(this.orderBy, orderItem);
finalQuery.put(Constant.sort, orderMap);
}
Map<String,Object> source = new HashMap<>();
if (!includes.isEmpty()) {
source.put(Constant.includes, this.includes);
}
if (!excludes.isEmpty()) {
source.put(Constant.excludes, this.excludes);
}
if (!source.isEmpty()) {
finalQuery.put(Constant.source, source);
}
finalQuery.put(Constant.size, this.size);
if (from != null) {
finalQuery.put(Constant.from, from.intValue());
}
return JSON.toJSONString(finalQuery);
}
public List<Object> obtainTermFilterList(Map<String, Object> termFilter) {
List<Object> termFilterList = new ArrayList<>();
for (Map.Entry<String, Object> e: termFilter.entrySet()){
Map<String, Object> termMap = new HashMap<>();
Map<String, Object> itemMap = new HashMap<>();
itemMap.put(e.getKey(), e.getValue());
if(e.getValue() instanceof List){
termMap.put(Constant.terms, itemMap);
}else{
termMap.put(Constant.term, itemMap);
}
termFilterList.add(termMap);
}
return termFilterList;
}
public String getOrderBy() {
return orderBy;
}
public void setOrderBy(String orderBy) {
this.orderBy = orderBy;
}
public String getOrder() {
return order;
}
public void setOrder(String order) {
this.order = order;
}
public int getSize() {
return size;
}
public void setSize(int size) {
this.size = size;
}
public Integer getFrom() {
return from;
}
public void setFrom(Integer from) {
this.from = from;
}
public Map<String, Object> getTermFilter() {
return Collections.unmodifiableMap(termFilter);
}
public Map<String, Range> getRangeFilter() {
return Collections.unmodifiableMap(rangeFilter);
}
public Map<String, Object> getMustNotTermFilter() {
return Collections.unmodifiableMap(mustNotTermFilter);
}
public Map<String, |