package com.walker.support.es.dao; import java.util.ArrayList; import java.util.List; /** * 查询参数 * * @author 时克英 * @date 2017-04-22 */ public class SearchParameter { /** * 排序方式 */ public enum Order { ASC, DESC } /** * 获取高亮起始标签 * * @return 高亮起始标签 */ public String getHighlighterPreTags() { return this.highlighterPreTags; } // 高亮起始标签 private String highlighterPreTags; // 高亮结束标签 private String highlighterPostTags; // 高亮字段列表 private String[] highlightedFields; // 高亮片段大小 private Integer highlighterFragmentSize; // 高亮片段数量 private Integer highlighterNumOfFragments; // Fetch Source 包含字段 private String[] fetchSourceIncludes; // Fetch Source 排除字段 private String[] fetchSourceExcludes; // 排序 private List fieldOrderList; public SearchParameter() { // 设置默认的高亮标签 this.highlighterPreTags = ""; this.highlighterPostTags = ""; } /** * 设置高亮起始标签 * * @param highlighterPreTags 高亮起始标签 */ public void setHighlighterPreTags(String highlighterPreTags) { this.highlighterPreTags = highlighterPreTags; } /** * 获取高亮结束标签 * * @return 高亮结束标签 */ public String getHighlighterPostTags() { return this.highlighterPostTags; } /** * 设置高亮结束标签 * * @param highlighterPostTags 高亮结束标签 */ public void setHighlighterPostTags(String highlighterPostTags) { this.highlighterPostTags = highlighterPostTags; } /** * 获取高亮字段 * * @return 高亮字段 */ public String[] getHighlightedFields() { return this.highlightedFields; } /** * 设置高亮字段 * * @param highlightedFields 高亮字段 */ public void setHighlightedFields(String[] highlightedFields) { this.highlightedFields = highlightedFields; } /** * 获取高亮分片大小 * * @return 高亮分片大小 */ public Integer getHighlighterFragmentSize() { return this.highlighterFragmentSize; } /** * 设置高亮分片大小 * * @param highlighterFragmentSize 高亮分片大小 */ public void setHighlighterFragmentSize(Integer highlighterFragmentSize) { this.highlighterFragmentSize = highlighterFragmentSize; } /** * 获取高亮分片数量 * * @return 高亮分片数量 */ public Integer getHighlighterNumOfFragments() { return this.highlighterNumOfFragments; } /** * 设置高亮分片数量 * * @param highlighterNumOfFragments 高亮分片数量 */ public void setHighlighterNumOfFragments(Integer highlighterNumOfFragments) { this.highlighterNumOfFragments = highlighterNumOfFragments; } /** * 获取_source包含字段 * * @return _source包含字段 */ public String[] getFetchSourceIncludes() { return this.fetchSourceIncludes; } /** * 设置_source包含字段 * * @param fetchSourceIncludes _source包含字段 */ public void setFetchSourceIncludes(String[] fetchSourceIncludes) { this.fetchSourceIncludes = fetchSourceIncludes; } /** * 获取_source排除字段 * * @return _source排除字段 */ public String[] getFetchSourceExcludes() { return this.fetchSourceExcludes; } /** * 设置_source排除字段 * * @param fetchSourceExcludes _source排除字段 */ public void setFetchSourceExcludes(String[] fetchSourceExcludes) { this.fetchSourceExcludes = fetchSourceExcludes; } /** * 获取排序字段及方式列表 * * @return 排序字段及方式列表 */ public List getFieldOrderList() { return this.fieldOrderList; } /** * 设置排序字段及方式列表 * * @param fieldOrderList 排序字段及方式列表 */ public void setFieldOrderList(List fieldOrderList) { this.fieldOrderList = fieldOrderList; } /** * 增加排序字段及方式 * * @param fieldOrder 排序字段及方式 */ private void addSort(FieldOrder fieldOrder) { if (this.fieldOrderList == null) { this.fieldOrderList = new ArrayList<>(); } this.fieldOrderList.add(new FieldOrder(fieldOrder.getField(), fieldOrder.getOrder())); } /** * 增加排序字段 * * @param field 排序字段 */ public void addSortAsc(String field) { addSort(new FieldOrder(field, Order.ASC)); } /** * 增加逆序排序 * * @param field 排序字段 */ public void addSortDesc(String field) { addSort(new FieldOrder(field, Order.DESC)); } @Override public String toString() { // return ToStringBuilder.reflectionToString(this, ToStringStyle.MULTI_LINE_STYLE); return new StringBuilder("[ tags").append(this.highlighterPreTags) .append(", highlighterPostTags=").append(this.highlighterPostTags) .append(", heighLightFields=").append(this.highlightedFields) .append(", include=").append(this.fetchSourceIncludes) .append("]").toString(); } /** * 排序字段及方式 */ public static class FieldOrder { private String field; private Order order; /** * 根据字段及排序方式创建排序对象 * * @param field 字段 * @param order 排序方式 */ public FieldOrder(String field, Order order) { this.field = field; this.order = order; } /** * 获取排序字段 * * @return 排序字段 */ public String getField() { return field; } /** * 设置排序字段 * * @param field 字段 */ public void setField(String field) { this.field = field; } /** * 获取排序方式 * * @return 排序方式 */ public Order getOrder() { return order; } /** * 设置排序方式 * * @param order 排序方式 */ public void setOrder(Order order) { this.order = order; } } }