package com.example.demo.es.dto;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.util.List;
import java.util.Map;
@Data
public class EsDto implements Serializable {
private Integer from;
private Integer size;
private SortDto sort;
private QueryDto query;
private T _source;
@Data
public static class QueryDto{
private Map<String,Object> match;
private BoolDto bool;
private Integer minimum_should_match;
private FilterDto filter;
}
@Data
public static class BoolDto{
private List<MustDto> must;
private List<MustNotDto> mustNot;
private List<ShouldDto> should;
private Integer minimum_should_match;
}
@Data
private abstract static class CommonMustDto{
private MatchBoolDto match;
private Map<String,Map<String,Object>> range;
private List<TermDto> term;
private TermsDto terms;
private MultiMatchDto multi_match;
}
@EqualsAndHashCode(callSuper = true)
@Data
public static class MustDto extends CommonMustDto{
}
@EqualsAndHashCode(callSuper = true)
@Data
public static class MustNotDto extends CommonMustDto{
}
@Data
public static class MatchBoolDto {
}
public enum Compare{
GT("gt"),
LT("lte");
private String sign;
Compare(String sign){
this.sign = sign;
}
public String getVal(){
return sign;
}
}
@Data
public static class TermDto {
}
@Data
public static class TermsDto {
}
@Data
public static class MultiMatchDto {
private String query;
}
@Data
public static class ShouldDto{
private Map<String,Object> match;
private BoolDto bool;
}
@Data
public static class FilterDto{
}
@Data
public static class SortDto{
private Map<String,Object> date;
private Map<String,Object> _Score;
}
public enum OrderStatus{
ASC("ASC"),
DESC("DESC");
private String status;
OrderStatus(String status){
this.status = status;
}
}
}
花了一下午,初次把es常用查询条件封装,后来发现spring已经封装好了,晕死