-
Notifications
You must be signed in to change notification settings - Fork 65
5.Provider
codingPao edited this page May 14, 2021
·
5 revisions
AggProvider
CollapseProvider
IdProvider
MultiMatchFieldProvider
ScoreFunctionProvider
ScriptFieldProvider
ScriptProvider
ScrollProvider
SortProvider
SourceProvider
VersionProvider
HighlighterProvider
排序需要实现SortProvider
接口。
@Data
public class SampleRecentOrderCondition implements SortProvider {
private static final Sort[] SORTS = {
//字段升序
Sort.fieldAsc("createTime"),
//脚本降序
Sort.scriptStringDesc(Script.stored("order_script"))};
@Must
private Long cargoId;
@Override
public Sort[] getSorts() {
return new Sort[0];
}
}
脚本字段需要实现ScriptFieldProvider
接口。
@Data
public class SampleRecentOrderCondition implements ScriptFieldProvider {
private static final ScriptField[] SCRIPT_FIELDS = new ScriptField[]{
ScriptField.of("createTime", Script.stored("order_script"))
};
@Must
private Long cargoId;
@Override
public ScriptField[] getScriptFields() {
return new ScriptField[0];
}
}
自定返回字段,可以通过两种方式实现:
实现
SourceProvider
接口
public class ProductCondition implements SourceProvider {
private static final String[] INCLUDE_FIELDS = {"id", "name"};
private static final String[] EXCLUDE_FIELDS = {"label"};
/**
* 获取包含的字段列表
*
* @return 字段列表
*/
@Override
public String[] getIncludeFields() {
return INCLUDE_FIELDS;
}
/**
* 获取排除的字段列表
*
* @return 字段列表
*/
@Override
public String[] getExcludeFields() {
return EXCLUDE_FIELDS;
}
}
返回值实体类型定义
@Data
public class Product {
private Long id;
private String name;
@Ignore
private String label;
}
此返回值类型,说明返回的字段为:
["id", "name"]
搜索条件实现
HighlighterProvider
接口
@Data
public class SampleRecentOrderCondition implements HighlighterProvider {
@Must(queryType = QueryType.MATCH)
private String loadAddress = "河北";
@Override
public HighlighterBuilder highlighterBuilder() {
return Highlighter.highlighter().addFields(Highlighter.field("loadAddress"));
}
}
返回实体实现
HighlightSource
接口
@Data
public class RecentOrder implements HighlightSource {
private Map<String, List<String>> highlightSource;
@Override
public void setHighlightSource(Map<String, List<String>> highlightSource) {
this.highlightSource = highlightSource;
}
}