package org.jeecg.common.es;
|
|
/**
|
* 用于创建 ElasticSearch 的 queryString
|
*
|
* @author sunjianlei
|
*/
|
public class QueryStringBuilder {
|
|
StringBuilder builder;
|
|
public QueryStringBuilder(String field, String str, boolean not, boolean addQuot) {
|
builder = this.createBuilder(field, str, not, addQuot);
|
}
|
|
public QueryStringBuilder(String field, String str, boolean not) {
|
builder = this.createBuilder(field, str, not, true);
|
}
|
|
/**
|
* 创建 StringBuilder
|
*
|
* @param field
|
* @param str
|
* @param not 是否是不匹配
|
* @param addQuot 是否添加双引号
|
* @return
|
*/
|
public StringBuilder createBuilder(String field, String str, boolean not, boolean addQuot) {
|
StringBuilder sb = new StringBuilder(field).append(":(");
|
if (not) {
|
sb.append(" NOT ");
|
}
|
this.addQuotEffect(sb, str, addQuot);
|
return sb;
|
}
|
|
public QueryStringBuilder and(String str) {
|
return this.and(str, true);
|
}
|
|
public QueryStringBuilder and(String str, boolean addQuot) {
|
builder.append(" AND ");
|
this.addQuot(str, addQuot);
|
return this;
|
}
|
|
public QueryStringBuilder or(String str) {
|
return this.or(str, true);
|
}
|
|
public QueryStringBuilder or(String str, boolean addQuot) {
|
builder.append(" OR ");
|
this.addQuot(str, addQuot);
|
return this;
|
}
|
|
public QueryStringBuilder not(String str) {
|
return this.not(str, true);
|
}
|
|
public QueryStringBuilder not(String str, boolean addQuot) {
|
builder.append(" NOT ");
|
this.addQuot(str, addQuot);
|
return this;
|
}
|
|
/**
|
* 添加双引号(模糊查询,不能加双引号)
|
*/
|
private QueryStringBuilder addQuot(String str, boolean addQuot) {
|
return this.addQuotEffect(this.builder, str, addQuot);
|
}
|
|
/**
|
* 是否在两边加上双引号
|
* @param builder
|
* @param str
|
* @param addQuot
|
* @return
|
*/
|
private QueryStringBuilder addQuotEffect(StringBuilder builder, String str, boolean addQuot) {
|
if (addQuot) {
|
builder.append('"');
|
}
|
builder.append(str);
|
if (addQuot) {
|
builder.append('"');
|
}
|
return this;
|
}
|
|
@Override
|
public String toString() {
|
return builder.append(")").toString();
|
}
|
|
}
|