nfsantos commented on code in PR #2346:
URL: https://github.com/apache/jackrabbit-oak/pull/2346#discussion_r2161511697


##########
oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elastic/query/ElasticRequestHandler.java:
##########
@@ -1123,7 +1127,20 @@ private Query createQuery(String propertyName, 
Filter.PropertyRestriction pr, Pr
         final String field = 
elasticIndexDefinition.getElasticKeyword(propertyName);
 
         if (pr.isNullRestriction()) {
-            return Query.of(q -> q.bool(b -> b.mustNot(m -> m.exists(e -> 
e.field(field)))));
+            // nullProps check has been added since 1.4.0. Use the old 
strategy when version is lower
+            if 
(elasticIndexDefinition.getMappingVersion().compareTo(MINIMUM_NULL_CHECK_VERSION)
 < 0) {
+                // check if the default mapping is >= 1.5.0
+                if (ElasticIndexDefinition.MAPPING_VERSION != null &&
+                        ElasticIndexDefinition.MAPPING_VERSION.compareTo(new 
ElasticSemVer(1, 5, 0)) >= 0) {

Review Comment:
   Suggestion: create a constant with `new ElasticSemVer(1, 5, 0)`: avoids 
creating a new instance every time this logic is executed and improves 
readability because the name of the constant can document the meaning of this 
particular version (maybe `MAXIMUM_NULL_CHECK_VERSION`?)



##########
oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elastic/index/ElasticDocument.java:
##########
@@ -79,6 +81,7 @@ public class ElasticDocument {
         this.fulltext = new LinkedHashSet<>();
         this.suggest = new LinkedHashSet<>();
         this.spellcheck = new LinkedHashSet<>();
+        this.nullProperties = new LinkedHashSet<>();
         this.properties = new HashMap<>();

Review Comment:
   Just a side comment, not related to this PR. All the other datastructures 
used for the fields in this class have a well-defined iteration order, except 
this one. Could this be an issue? If so, for consistency with the other fields, 
we could use a `LinkedHashMap` here. Or if the order is not important, then we 
can use `HashSet` for the others instead of `LinkedHashSet`. 



##########
oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elastic/query/ElasticRequestHandler.java:
##########
@@ -1123,7 +1127,20 @@ private Query createQuery(String propertyName, 
Filter.PropertyRestriction pr, Pr
         final String field = 
elasticIndexDefinition.getElasticKeyword(propertyName);
 
         if (pr.isNullRestriction()) {
-            return Query.of(q -> q.bool(b -> b.mustNot(m -> m.exists(e -> 
e.field(field)))));
+            // nullProps check has been added since 1.4.0. Use the old 
strategy when version is lower

Review Comment:
   ```suggestion
               // nullProps check has been added in 1.4.0. Use the old strategy 
when version is lower
   ```



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: oak-dev-unsubscr...@jackrabbit.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to