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<FieldOrder> fieldOrderList;
|
|
public SearchParameter() {
|
// 设置默认的高亮标签
|
this.highlighterPreTags = "<font color=\"red\">";
|
this.highlighterPostTags = "</font>";
|
}
|
|
/**
|
* 设置高亮起始标签
|
*
|
* @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<FieldOrder> getFieldOrderList() {
|
return this.fieldOrderList;
|
}
|
|
/**
|
* 设置排序字段及方式列表
|
*
|
* @param fieldOrderList 排序字段及方式列表
|
*/
|
public void setFieldOrderList(List<FieldOrder> 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;
|
}
|
}
|
}
|