From f8fff14124e987e7ccd76f4cbb663922e5a53840 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=AD=E5=8B=87?= Date: Wed, 14 Jun 2023 16:09:49 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=9D=A1=E4=BB=B6?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0boolean=20condition=EF=BC=8C=E7=AE=80?= =?UTF-8?q?=E5=8C=96=E6=B7=BB=E5=8A=A0=E6=9D=A1=E4=BB=B6=E6=97=B6=E4=B8=9A?= =?UTF-8?q?=E5=8A=A1=E4=BB=A3=E7=A0=81=E5=86=99=E8=BF=87=E5=A4=9Aif?= =?UTF-8?q?=E6=9D=A1=E4=BB=B6=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/noear/esearchx/model/EsCondition.java | 137 +++++++++++++++--- 1 file changed, 118 insertions(+), 19 deletions(-) diff --git a/src/main/java/org/noear/esearchx/model/EsCondition.java b/src/main/java/org/noear/esearchx/model/EsCondition.java index 957a688..a3baf54 100644 --- a/src/main/java/org/noear/esearchx/model/EsCondition.java +++ b/src/main/java/org/noear/esearchx/model/EsCondition.java @@ -4,6 +4,7 @@ import org.noear.esearchx.PriUtils; import org.noear.snack.ONode; import java.util.Arrays; +import java.util.Collection; import java.util.function.Consumer; /** @@ -14,7 +15,8 @@ import java.util.function.Consumer; */ public class EsCondition { private final ONode oNode; - public EsCondition(ONode oNode){ + + public EsCondition(ONode oNode) { this.oNode = oNode; } @@ -24,12 +26,12 @@ public class EsCondition { /** * 设置过滤风格 - * */ + */ private void filterStyleSet(String name) { if (score_mode == null) { oNodeArray = oNode.getOrNew("bool").getOrNew(name).asArray(); } else { - //使用评分模式 + // 使用评分模式 oNodeArray = oNode.getOrNew("function_score").getOrNew("query").getOrNew("bool").getOrNew(name).asArray(); if (score_mode.length() > 0) { @@ -40,13 +42,13 @@ public class EsCondition { /** * 设置过滤风格 - * */ + */ private void filterSet(String type, String field, Object value) { if (oNodeArray == null) { if (score_mode == null) { oNode.getOrNew(type).set(field, value); - }else{ - //使用评分模式 + } else { + // 使用评分模式 oNode.getOrNew("function_score").getOrNew("query").getOrNew(type).set(field, value); if (score_mode.length() > 0) { oNode.getOrNew("function_score").set("score_mode", score_mode); @@ -59,7 +61,7 @@ public class EsCondition { /** * 启用评分定制 - * + *

* function_score/.. */ public EsCondition useScore() { @@ -68,7 +70,7 @@ public class EsCondition { /** * 启用评分定制 - * + *

* function_score/.. */ public EsCondition useScore(String mode) { @@ -82,10 +84,9 @@ public class EsCondition { } - /** * 只过滤,不参与打分 - * + *

* bool/filter */ public EsCondition filter() { @@ -95,7 +96,7 @@ public class EsCondition { /** * 如果有多个条件,这些条件都必须满足 and与 - * + *

* bool/must */ public EsCondition must() { @@ -105,7 +106,7 @@ public class EsCondition { /** * 如果有多个条件,满足一个或多个即可 or或 - * + *

* bool/should */ public EsCondition should() { @@ -115,7 +116,7 @@ public class EsCondition { /** * 设置should条件最小匹配数 - * + *

* bool/minimum_should_match */ public EsCondition minimumShouldMatch(int min) { @@ -125,7 +126,7 @@ public class EsCondition { /** * 和must相反,必须都不满足条件才可以匹配到 !非 - * + *

* bool/mustNot */ public EsCondition mustNot() { @@ -137,7 +138,7 @@ public class EsCondition { /** * match_all */ - public void matchAll(){ + public void matchAll() { oNode.getOrNew("match_all").asObject(); } @@ -161,7 +162,6 @@ public class EsCondition { return this; } - /** * match */ @@ -170,6 +170,13 @@ public class EsCondition { return this; } + /** + * match + */ + public EsCondition match(boolean condition, String field, Object value) { + return condition ? match(field, value) : this; + } + /** * match_phrase */ @@ -178,6 +185,13 @@ public class EsCondition { return this; } + /** + * match_phrase + */ + public EsCondition matchPhrase(boolean condition, String field, Object value) { + return condition ? matchPhrase(field, value) : this; + } + /** * match_phrase slop */ @@ -190,6 +204,12 @@ public class EsCondition { return this; } + /** + * match_phrase slop + */ + public EsCondition matchPhrase(boolean condition, String field, Object value, int slop) { + return condition ? matchPhrase(field, value, slop) : this; + } /** * match_phrase_prefix @@ -199,6 +219,13 @@ public class EsCondition { return this; } + /** + * match_phrase_prefix + */ + public EsCondition matchPhrasePrefix(boolean condition, String field, Object value) { + return condition ? matchPhrasePrefix(field, value) : this; + } + /** * match_phrase_prefix slop */ @@ -211,6 +238,13 @@ public class EsCondition { return this; } + /** + * match_phrase_prefix slop + */ + public EsCondition matchPhrasePrefix(boolean condition, String field, Object value, int slop) { + return condition ? matchPhrasePrefix(field, value, slop) : this; + } + /** * exists */ @@ -219,6 +253,13 @@ public class EsCondition { return this; } + /** + * exists + */ + public EsCondition exists(boolean condition, String field) { + return condition ? exists(field) : this; + } + /** * term */ @@ -227,6 +268,12 @@ public class EsCondition { return this; } + /** + * term + */ + public EsCondition term(boolean condition, String field, Object value) { + return condition ? term(field, value) : this; + } /** * terms @@ -236,6 +283,28 @@ public class EsCondition { return this; } + /** + * terms + */ + public EsCondition terms(String field, Collection values) { + filterSet("terms", field, PriUtils.newNode().addAll(values)); + return this; + } + + /** + * terms + */ + public EsCondition terms(boolean condition, String field, Object... values) { + return condition ? terms(field, (Object[]) values) : this; + } + + /** + * terms + */ + public EsCondition terms(boolean condition, String field, Collection values) { + return condition ? terms(field, values) : this; + } + /** * range */ @@ -248,6 +317,13 @@ public class EsCondition { return this; } + /** + * range + */ + public EsCondition range(boolean condition, String field, Consumer range) { + return condition ? range(field, range) : this; + } + /** * prefix @@ -257,6 +333,13 @@ public class EsCondition { return this; } + /** + * prefix + */ + public EsCondition prefix(boolean condition, String field, String value) { + return condition ? prefix(field, value) : this; + } + /** * wildcard * @@ -267,6 +350,15 @@ public class EsCondition { return this; } + /** + * wildcard + * + * @param value *表示任意字符,?表示任意单个字符( + */ + public EsCondition wildcard(boolean condition, String field, String value) { + return condition ? wildcard(field, value) : this; + } + /** * regexp */ @@ -275,10 +367,17 @@ public class EsCondition { return this; } + /** + * regexp + */ + public EsCondition regexp(boolean condition, String field, String value) { + return condition ? regexp(field, value) : this; + } + /** * script */ - public EsCondition script(String source, Consumer params) { + public EsCondition script(String source, Consumer params) { return script(source, "painless", params); } @@ -303,7 +402,7 @@ public class EsCondition { /** * 添加下级条件 - * */ + */ public EsCondition add(Consumer condition) { if (oNodeArray == null) { throw new IllegalArgumentException("Conditions lack combination types"); @@ -315,4 +414,4 @@ public class EsCondition { return this; } -} \ No newline at end of file +} -- Gitee From 1334f6f7ef30ef4d26aeb035657e6c4f88a9c977 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=AD=E5=8B=87?= Date: Fri, 7 Jul 2023 11:47:57 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=9D=A1=E4=BB=B6?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0boolean=20condition=EF=BC=8C=E7=AE=80?= =?UTF-8?q?=E5=8C=96=E6=B7=BB=E5=8A=A0=E6=9D=A1=E4=BB=B6=E6=97=B6=E4=B8=9A?= =?UTF-8?q?=E5=8A=A1=E4=BB=A3=E7=A0=81=E5=86=99=E8=BF=87=E5=A4=9Aif?= =?UTF-8?q?=E6=9D=A1=E4=BB=B6=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/noear/esearchx/model/EsCondition.java | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/main/java/org/noear/esearchx/model/EsCondition.java b/src/main/java/org/noear/esearchx/model/EsCondition.java index a3baf54..ceebfdb 100644 --- a/src/main/java/org/noear/esearchx/model/EsCondition.java +++ b/src/main/java/org/noear/esearchx/model/EsCondition.java @@ -173,7 +173,7 @@ public class EsCondition { /** * match */ - public EsCondition match(boolean condition, String field, Object value) { + public EsCondition matchIf(boolean condition, String field, Object value) { return condition ? match(field, value) : this; } @@ -188,7 +188,7 @@ public class EsCondition { /** * match_phrase */ - public EsCondition matchPhrase(boolean condition, String field, Object value) { + public EsCondition matchPhraseIf(boolean condition, String field, Object value) { return condition ? matchPhrase(field, value) : this; } @@ -207,7 +207,7 @@ public class EsCondition { /** * match_phrase slop */ - public EsCondition matchPhrase(boolean condition, String field, Object value, int slop) { + public EsCondition matchPhraseIf(boolean condition, String field, Object value, int slop) { return condition ? matchPhrase(field, value, slop) : this; } @@ -222,7 +222,7 @@ public class EsCondition { /** * match_phrase_prefix */ - public EsCondition matchPhrasePrefix(boolean condition, String field, Object value) { + public EsCondition matchPhrasePrefixIf(boolean condition, String field, Object value) { return condition ? matchPhrasePrefix(field, value) : this; } @@ -241,7 +241,7 @@ public class EsCondition { /** * match_phrase_prefix slop */ - public EsCondition matchPhrasePrefix(boolean condition, String field, Object value, int slop) { + public EsCondition matchPhrasePrefixIf(boolean condition, String field, Object value, int slop) { return condition ? matchPhrasePrefix(field, value, slop) : this; } @@ -256,7 +256,7 @@ public class EsCondition { /** * exists */ - public EsCondition exists(boolean condition, String field) { + public EsCondition existsIf(boolean condition, String field) { return condition ? exists(field) : this; } @@ -271,7 +271,7 @@ public class EsCondition { /** * term */ - public EsCondition term(boolean condition, String field, Object value) { + public EsCondition termIf(boolean condition, String field, Object value) { return condition ? term(field, value) : this; } @@ -294,14 +294,14 @@ public class EsCondition { /** * terms */ - public EsCondition terms(boolean condition, String field, Object... values) { + public EsCondition termsIf(boolean condition, String field, Object... values) { return condition ? terms(field, (Object[]) values) : this; } /** * terms */ - public EsCondition terms(boolean condition, String field, Collection values) { + public EsCondition termsIf(boolean condition, String field, Collection values) { return condition ? terms(field, values) : this; } @@ -320,7 +320,7 @@ public class EsCondition { /** * range */ - public EsCondition range(boolean condition, String field, Consumer range) { + public EsCondition rangeIf(boolean condition, String field, Consumer range) { return condition ? range(field, range) : this; } @@ -336,7 +336,7 @@ public class EsCondition { /** * prefix */ - public EsCondition prefix(boolean condition, String field, String value) { + public EsCondition prefixIf(boolean condition, String field, String value) { return condition ? prefix(field, value) : this; } @@ -355,7 +355,7 @@ public class EsCondition { * * @param value *表示任意字符,?表示任意单个字符( */ - public EsCondition wildcard(boolean condition, String field, String value) { + public EsCondition wildcardIf(boolean condition, String field, String value) { return condition ? wildcard(field, value) : this; } @@ -370,7 +370,7 @@ public class EsCondition { /** * regexp */ - public EsCondition regexp(boolean condition, String field, String value) { + public EsCondition regexpIf(boolean condition, String field, String value) { return condition ? regexp(field, value) : this; } -- Gitee