This is an automated email from the ASF dual-hosted git repository.
ilgrosso pushed a commit to branch 3_0_X
in repository https://gitbox.apache.org/repos/asf/syncope.git
The following commit(s) were added to refs/heads/3_0_X by this push:
new 8922d70efe [SYNCOPE-1886] move must to filter to improve query
performance (#1087)
8922d70efe is described below
commit 8922d70efe386ea7969f4687f6676d8b1c217dbc
Author: Andrea Patricelli <[email protected]>
AuthorDate: Fri Jun 6 15:35:58 2025 +0200
[SYNCOPE-1886] move must to filter to improve query performance (#1087)
---
.../jpa/dao/ElasticsearchAnySearchDAO.java | 18 ++++-----
.../jpa/dao/ElasticsearchAuditConfDAO.java | 2 +-
.../persistence/jpa/dao/ElasticsearchRealmDAO.java | 4 +-
.../jpa/dao/ElasticsearchAnySearchDAOTest.java | 44 +++++++++++-----------
.../jpa/dao/OpenSearchAnySearchDAO.java | 18 ++++-----
.../jpa/dao/OpenSearchAuditConfDAO.java | 2 +-
.../persistence/jpa/dao/OpenSearchRealmDAO.java | 4 +-
.../jpa/dao/OpenSearchAnySearchDAOTest.java | 44 +++++++++++-----------
8 files changed, 68 insertions(+), 68 deletions(-)
diff --git
a/ext/elasticsearch/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/ElasticsearchAnySearchDAO.java
b/ext/elasticsearch/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/ElasticsearchAnySearchDAO.java
index 0d7163a1b0..b7136adcfc 100644
---
a/ext/elasticsearch/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/ElasticsearchAnySearchDAO.java
+++
b/ext/elasticsearch/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/ElasticsearchAnySearchDAO.java
@@ -189,10 +189,10 @@ public class ElasticsearchAnySearchDAO extends
AbstractAnySearchDAO {
if (!recursive) {
query = new Query.Builder().bool(
QueryBuilders.bool().
- must(new
Query.Builder().term(QueryBuilders.term().
+ filter(new
Query.Builder().term(QueryBuilders.term().
field("realm").value(base.getKey()).build()).
build()).
- must(query).build()).
+ filter(query).build()).
build();
}
} else {
@@ -203,8 +203,8 @@ public class ElasticsearchAnySearchDAO extends
AbstractAnySearchDAO {
if (filter.getLeft().isPresent()) {
query = new Query.Builder().bool(
QueryBuilders.bool().
- must(filter.getLeft().get()).
- must(query).build()).
+ filter(filter.getLeft().get()).
+ filter(query).build()).
build();
}
}
@@ -400,20 +400,20 @@ public class ElasticsearchAnySearchDAO extends
AbstractAnySearchDAO {
List<Query> andCompound = new ArrayList<>();
Query andLeft = getQuery(cond.getLeft(), kind);
- if (andLeft._kind() == Query.Kind.Bool && !((BoolQuery)
andLeft._get()).must().isEmpty()) {
- andCompound.addAll(((BoolQuery) andLeft._get()).must());
+ if (andLeft._kind() == Query.Kind.Bool && !((BoolQuery)
andLeft._get()).filter().isEmpty()) {
+ andCompound.addAll(((BoolQuery) andLeft._get()).filter());
} else {
andCompound.add(andLeft);
}
Query andRight = getQuery(cond.getRight(), kind);
- if (andRight._kind() == Query.Kind.Bool && !((BoolQuery)
andRight._get()).must().isEmpty()) {
- andCompound.addAll(((BoolQuery) andRight._get()).must());
+ if (andRight._kind() == Query.Kind.Bool && !((BoolQuery)
andRight._get()).filter().isEmpty()) {
+ andCompound.addAll(((BoolQuery) andRight._get()).filter());
} else {
andCompound.add(andRight);
}
- query = new
Query.Builder().bool(QueryBuilders.bool().must(andCompound).build()).build();
+ query = new
Query.Builder().bool(QueryBuilders.bool().filter(andCompound).build()).build();
break;
case OR:
diff --git
a/ext/elasticsearch/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/ElasticsearchAuditConfDAO.java
b/ext/elasticsearch/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/ElasticsearchAuditConfDAO.java
index 14fe873f62..73d9f665f5 100644
---
a/ext/elasticsearch/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/ElasticsearchAuditConfDAO.java
+++
b/ext/elasticsearch/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/ElasticsearchAuditConfDAO.java
@@ -123,7 +123,7 @@ public class ElasticsearchAuditConfDAO extends
JPAAuditConfDAO {
build());
}
- return new
Query.Builder().bool(QueryBuilders.bool().must(queries).build()).build();
+ return new
Query.Builder().bool(QueryBuilders.bool().filter(queries).build()).build();
}
@Override
diff --git
a/ext/elasticsearch/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/ElasticsearchRealmDAO.java
b/ext/elasticsearch/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/ElasticsearchRealmDAO.java
index 2dc61a0a22..8d65e91471 100644
---
a/ext/elasticsearch/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/ElasticsearchRealmDAO.java
+++
b/ext/elasticsearch/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/ElasticsearchRealmDAO.java
@@ -162,7 +162,7 @@ public class ElasticsearchRealmDAO extends JPARealmDAO {
}
}
- return new Query.Builder().bool(QueryBuilders.bool().must(
+ return new Query.Builder().bool(QueryBuilders.bool().filter(
prefix,
new Query.Builder().regexp(QueryBuilders.regexp().
field("name").value(output.toString()).build()).
@@ -237,7 +237,7 @@ public class ElasticsearchRealmDAO extends JPARealmDAO {
field("fullPath").value(SyncopeConstants.ROOT_REALM.equals(prefix) ? "/" :
prefix + "/").
build()).build()).build()).build();
- Query query = new Query.Builder().bool(QueryBuilders.bool().must(
+ Query query = new Query.Builder().bool(QueryBuilders.bool().filter(
buildDescendantsQuery(Set.of(base), null),
prefixQuery).build()).
build();
diff --git
a/ext/elasticsearch/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/dao/ElasticsearchAnySearchDAOTest.java
b/ext/elasticsearch/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/dao/ElasticsearchAnySearchDAOTest.java
index 03b77935fe..46dd995f7f 100644
---
a/ext/elasticsearch/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/dao/ElasticsearchAnySearchDAOTest.java
+++
b/ext/elasticsearch/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/dao/ElasticsearchAnySearchDAOTest.java
@@ -192,8 +192,8 @@ public class ElasticsearchAnySearchDAOTest {
assertThat(
new Query.Builder().bool(QueryBuilders.bool().
- must(new
Query.Builder().exists(QueryBuilders.exists().field("id").build()).build()).
- must(new
Query.Builder().term(QueryBuilders.term().field("memberships").value("groupKey").
+ filter(new
Query.Builder().exists(QueryBuilders.exists().field("id").build()).build()).
+ filter(new
Query.Builder().term(QueryBuilders.term().field("memberships").value("groupKey").
build()).build()).build()).build()).
usingRecursiveComparison().
isEqualTo(request.query());
@@ -255,20 +255,20 @@ public class ElasticsearchAnySearchDAOTest {
SearchCond.getLeaf(cond6))),
AnyTypeKind.USER);
assertEquals(Query.Kind.Bool, query._kind());
- assertEquals(6, ((BoolQuery) query._get()).must().size());
+ assertEquals(6, ((BoolQuery) query._get()).filter().size());
assertThat(
new Query.Builder().bool(QueryBuilders.bool().
- must(new Query.Builder().term(
+ filter(new Query.Builder().term(
QueryBuilders.term().field("id").value("1").build()).build()).
- must(new Query.Builder().term(
+ filter(new Query.Builder().term(
QueryBuilders.term().field("id").value("2").build()).build()).
- must(new Query.Builder().term(
+ filter(new Query.Builder().term(
QueryBuilders.term().field("id").value("3").build()).build()).
- must(new Query.Builder().term(
+ filter(new Query.Builder().term(
QueryBuilders.term().field("id").value("4").build()).build()).
- must(new Query.Builder().term(
+ filter(new Query.Builder().term(
QueryBuilders.term().field("id").value("5").build()).build()).
- must(new Query.Builder().term(
+ filter(new Query.Builder().term(
QueryBuilders.term().field("id").value("6").build()).build()).
build()).build()).
usingRecursiveComparison().isEqualTo(query);
@@ -313,16 +313,16 @@ public class ElasticsearchAnySearchDAOTest {
SearchCond.getLeaf(cond6))))),
AnyTypeKind.USER);
assertEquals(Query.Kind.Bool, query._kind());
- assertEquals(2, ((BoolQuery) query._get()).must().size());
- Query left = ((BoolQuery) query._get()).must().get(0);
+ assertEquals(2, ((BoolQuery) query._get()).filter().size());
+ Query left = ((BoolQuery) query._get()).filter().get(0);
assertEquals(Query.Kind.DisMax, left._kind());
assertEquals(3, ((DisMaxQuery) left._get()).queries().size());
- Query right = ((BoolQuery) query._get()).must().get(1);
+ Query right = ((BoolQuery) query._get()).filter().get(1);
assertEquals(Query.Kind.DisMax, right._kind());
assertEquals(3, ((DisMaxQuery) right._get()).queries().size());
assertThat(
new Query.Builder().bool(QueryBuilders.bool().
- must(new
Query.Builder().disMax(QueryBuilders.disMax().
+ filter(new
Query.Builder().disMax(QueryBuilders.disMax().
queries(new Query.Builder().term(
QueryBuilders.term().field("id").value("1").build()).build()).
queries(new Query.Builder().term(
@@ -330,7 +330,7 @@ public class ElasticsearchAnySearchDAOTest {
queries(new Query.Builder().term(
QueryBuilders.term().field("id").value("3").build()).build()).build()).
build()).
- must(new
Query.Builder().disMax(QueryBuilders.disMax().
+ filter(new
Query.Builder().disMax(QueryBuilders.disMax().
queries(new Query.Builder().term(
QueryBuilders.term().field("id").value("4").build()).build()).
queries(new Query.Builder().term(
@@ -356,26 +356,26 @@ public class ElasticsearchAnySearchDAOTest {
assertEquals(2, ((DisMaxQuery) query._get()).queries().size());
left = ((DisMaxQuery) query._get()).queries().get(0);
assertEquals(Query.Kind.Bool, left._kind());
- assertEquals(3, ((BoolQuery) left._get()).must().size());
+ assertEquals(3, ((BoolQuery) left._get()).filter().size());
right = ((DisMaxQuery) query._get()).queries().get(1);
assertEquals(Query.Kind.Bool, right._kind());
- assertEquals(3, ((BoolQuery) right._get()).must().size());
+ assertEquals(3, ((BoolQuery) right._get()).filter().size());
assertThat(
new Query.Builder().disMax(QueryBuilders.disMax().
queries(new
Query.Builder().bool(QueryBuilders.bool().
- must(new Query.Builder().term(
+ filter(new Query.Builder().term(
QueryBuilders.term().field("id").value("1").build()).build()).
- must(new Query.Builder().term(
+ filter(new Query.Builder().term(
QueryBuilders.term().field("id").value("2").build()).build()).
- must(new Query.Builder().term(
+ filter(new Query.Builder().term(
QueryBuilders.term().field("id").value("3").build()).build()).build()).
build()).
queries(new
Query.Builder().bool(QueryBuilders.bool().
- must(new Query.Builder().term(
+ filter(new Query.Builder().term(
QueryBuilders.term().field("id").value("4").build()).build()).
- must(new Query.Builder().term(
+ filter(new Query.Builder().term(
QueryBuilders.term().field("id").value("5").build()).build()).
- must(new Query.Builder().term(
+ filter(new Query.Builder().term(
QueryBuilders.term().field("id").value("6").build()).build()).build()).
build()).
build()).build()).
diff --git
a/ext/opensearch/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/OpenSearchAnySearchDAO.java
b/ext/opensearch/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/OpenSearchAnySearchDAO.java
index f24cba1abd..10bc71524c 100644
---
a/ext/opensearch/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/OpenSearchAnySearchDAO.java
+++
b/ext/opensearch/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/OpenSearchAnySearchDAO.java
@@ -188,10 +188,10 @@ public class OpenSearchAnySearchDAO extends
AbstractAnySearchDAO {
if (!recursive) {
query = new Query.Builder().bool(
QueryBuilders.bool().
- must(new
Query.Builder().term(QueryBuilders.term().
+ filter(new
Query.Builder().term(QueryBuilders.term().
field("realm").value(FieldValue.of(base.getKey())).build()).
build()).
- must(query).build()).
+ filter(query).build()).
build();
}
} else {
@@ -202,8 +202,8 @@ public class OpenSearchAnySearchDAO extends
AbstractAnySearchDAO {
if (filter.getLeft().isPresent()) {
query = new Query.Builder().bool(
QueryBuilders.bool().
- must(filter.getLeft().get()).
- must(query).build()).
+ filter(filter.getLeft().get()).
+ filter(query).build()).
build();
}
}
@@ -399,20 +399,20 @@ public class OpenSearchAnySearchDAO extends
AbstractAnySearchDAO {
List<Query> andCompound = new ArrayList<>();
Query andLeft = getQuery(cond.getLeft(), kind);
- if (andLeft._kind() == Query.Kind.Bool && !((BoolQuery)
andLeft._get()).must().isEmpty()) {
- andCompound.addAll(((BoolQuery) andLeft._get()).must());
+ if (andLeft._kind() == Query.Kind.Bool && !((BoolQuery)
andLeft._get()).filter().isEmpty()) {
+ andCompound.addAll(((BoolQuery) andLeft._get()).filter());
} else {
andCompound.add(andLeft);
}
Query andRight = getQuery(cond.getRight(), kind);
- if (andRight._kind() == Query.Kind.Bool && !((BoolQuery)
andRight._get()).must().isEmpty()) {
- andCompound.addAll(((BoolQuery) andRight._get()).must());
+ if (andRight._kind() == Query.Kind.Bool && !((BoolQuery)
andRight._get()).filter().isEmpty()) {
+ andCompound.addAll(((BoolQuery) andRight._get()).filter());
} else {
andCompound.add(andRight);
}
- query = new
Query.Builder().bool(QueryBuilders.bool().must(andCompound).build()).build();
+ query = new
Query.Builder().bool(QueryBuilders.bool().filter(andCompound).build()).build();
break;
case OR:
diff --git
a/ext/opensearch/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/OpenSearchAuditConfDAO.java
b/ext/opensearch/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/OpenSearchAuditConfDAO.java
index 45de90b259..a285dcf3d0 100644
---
a/ext/opensearch/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/OpenSearchAuditConfDAO.java
+++
b/ext/opensearch/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/OpenSearchAuditConfDAO.java
@@ -126,7 +126,7 @@ public class OpenSearchAuditConfDAO extends JPAAuditConfDAO
{
build());
}
- return new
Query.Builder().bool(QueryBuilders.bool().must(queries).build()).build();
+ return new
Query.Builder().bool(QueryBuilders.bool().filter(queries).build()).build();
}
@Override
diff --git
a/ext/opensearch/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/OpenSearchRealmDAO.java
b/ext/opensearch/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/OpenSearchRealmDAO.java
index 23e0c88f43..140f906ff0 100644
---
a/ext/opensearch/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/OpenSearchRealmDAO.java
+++
b/ext/opensearch/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/OpenSearchRealmDAO.java
@@ -161,7 +161,7 @@ public class OpenSearchRealmDAO extends JPARealmDAO {
}
}
- return new Query.Builder().bool(QueryBuilders.bool().must(
+ return new Query.Builder().bool(QueryBuilders.bool().filter(
prefix,
new Query.Builder().regexp(QueryBuilders.regexp().
field("name").value(output.toString()).build()).
@@ -236,7 +236,7 @@ public class OpenSearchRealmDAO extends JPARealmDAO {
field("fullPath").value(SyncopeConstants.ROOT_REALM.equals(prefix) ? "/" :
prefix + "/").
build()).build()).build()).build();
- Query query = new Query.Builder().bool(QueryBuilders.bool().must(
+ Query query = new Query.Builder().bool(QueryBuilders.bool().filter(
buildDescendantsQuery(Set.of(base), null),
prefixQuery).build()).
build();
diff --git
a/ext/opensearch/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/dao/OpenSearchAnySearchDAOTest.java
b/ext/opensearch/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/dao/OpenSearchAnySearchDAOTest.java
index 2c5a5a113e..f4c6ef4cab 100644
---
a/ext/opensearch/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/dao/OpenSearchAnySearchDAOTest.java
+++
b/ext/opensearch/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/dao/OpenSearchAnySearchDAOTest.java
@@ -193,8 +193,8 @@ public class OpenSearchAnySearchDAOTest {
assertThat(
new Query.Builder().bool(QueryBuilders.bool().
- must(new
Query.Builder().exists(QueryBuilders.exists().field("id").build()).build()).
- must(new
Query.Builder().term(QueryBuilders.term().field("memberships").
+ filter(new
Query.Builder().exists(QueryBuilders.exists().field("id").build()).build()).
+ filter(new
Query.Builder().term(QueryBuilders.term().field("memberships").
value(FieldValue.of("groupKey")).build()).build()).build()).build()).
usingRecursiveComparison().
isEqualTo(request.query());
@@ -256,20 +256,20 @@ public class OpenSearchAnySearchDAOTest {
SearchCond.getLeaf(cond6))),
AnyTypeKind.USER);
assertEquals(Query.Kind.Bool, query._kind());
- assertEquals(6, ((BoolQuery) query._get()).must().size());
+ assertEquals(6, ((BoolQuery) query._get()).filter().size());
assertThat(
new Query.Builder().bool(QueryBuilders.bool().
- must(new Query.Builder().term(
+ filter(new Query.Builder().term(
QueryBuilders.term().field("id").value(FieldValue.of("1")).build()).build()).
- must(new Query.Builder().term(
+ filter(new Query.Builder().term(
QueryBuilders.term().field("id").value(FieldValue.of("2")).build()).build()).
- must(new Query.Builder().term(
+ filter(new Query.Builder().term(
QueryBuilders.term().field("id").value(FieldValue.of("3")).build()).build()).
- must(new Query.Builder().term(
+ filter(new Query.Builder().term(
QueryBuilders.term().field("id").value(FieldValue.of("4")).build()).build()).
- must(new Query.Builder().term(
+ filter(new Query.Builder().term(
QueryBuilders.term().field("id").value(FieldValue.of("5")).build()).build()).
- must(new Query.Builder().term(
+ filter(new Query.Builder().term(
QueryBuilders.term().field("id").value(FieldValue.of("6")).build()).build()).
build()).build()).
usingRecursiveComparison().isEqualTo(query);
@@ -314,16 +314,16 @@ public class OpenSearchAnySearchDAOTest {
SearchCond.getLeaf(cond6))))),
AnyTypeKind.USER);
assertEquals(Query.Kind.Bool, query._kind());
- assertEquals(2, ((BoolQuery) query._get()).must().size());
- Query left = ((BoolQuery) query._get()).must().get(0);
+ assertEquals(2, ((BoolQuery) query._get()).filter().size());
+ Query left = ((BoolQuery) query._get()).filter().get(0);
assertEquals(Query.Kind.DisMax, left._kind());
assertEquals(3, ((DisMaxQuery) left._get()).queries().size());
- Query right = ((BoolQuery) query._get()).must().get(1);
+ Query right = ((BoolQuery) query._get()).filter().get(1);
assertEquals(Query.Kind.DisMax, right._kind());
assertEquals(3, ((DisMaxQuery) right._get()).queries().size());
assertThat(
new Query.Builder().bool(QueryBuilders.bool().
- must(new
Query.Builder().disMax(QueryBuilders.disMax().
+ filter(new
Query.Builder().disMax(QueryBuilders.disMax().
queries(new Query.Builder().term(
QueryBuilders.term().field("id").
value(FieldValue.of("1")).build()).build()).
@@ -334,7 +334,7 @@ public class OpenSearchAnySearchDAOTest {
QueryBuilders.term().field("id").
value(FieldValue.of("3")).build()).build()).build()).
build()).
- must(new
Query.Builder().disMax(QueryBuilders.disMax().
+ filter(new
Query.Builder().disMax(QueryBuilders.disMax().
queries(new Query.Builder().term(
QueryBuilders.term().field("id").
value(FieldValue.of("4")).build()).build()).
@@ -363,31 +363,31 @@ public class OpenSearchAnySearchDAOTest {
assertEquals(2, ((DisMaxQuery) query._get()).queries().size());
left = ((DisMaxQuery) query._get()).queries().get(0);
assertEquals(Query.Kind.Bool, left._kind());
- assertEquals(3, ((BoolQuery) left._get()).must().size());
+ assertEquals(3, ((BoolQuery) left._get()).filter().size());
right = ((DisMaxQuery) query._get()).queries().get(1);
assertEquals(Query.Kind.Bool, right._kind());
- assertEquals(3, ((BoolQuery) right._get()).must().size());
+ assertEquals(3, ((BoolQuery) right._get()).filter().size());
assertThat(
new Query.Builder().disMax(QueryBuilders.disMax().
queries(new
Query.Builder().bool(QueryBuilders.bool().
- must(new Query.Builder().term(
+ filter(new Query.Builder().term(
QueryBuilders.term().field("id").
value(FieldValue.of("1")).build()).build()).
- must(new Query.Builder().term(
+ filter(new Query.Builder().term(
QueryBuilders.term().field("id").
value(FieldValue.of("2")).build()).build()).
- must(new Query.Builder().term(
+ filter(new Query.Builder().term(
QueryBuilders.term().field("id").
value(FieldValue.of("3")).build()).build()).build()).
build()).
queries(new
Query.Builder().bool(QueryBuilders.bool().
- must(new Query.Builder().term(
+ filter(new Query.Builder().term(
QueryBuilders.term().field("id").
value(FieldValue.of("4")).build()).build()).
- must(new Query.Builder().term(
+ filter(new Query.Builder().term(
QueryBuilders.term().field("id").
value(FieldValue.of("5")).build()).build()).
- must(new Query.Builder().term(
+ filter(new Query.Builder().term(
QueryBuilders.term().field("id").
value(FieldValue.of("6")).build()).build()).build()).
build()).