diff --git a/pom.xml b/pom.xml
index 53390689..3dfc69f9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -67,7 +67,7 @@
co.elastic.clients
elasticsearch-java
- 8.13.3
+ 8.19.10
org.mapstruct
diff --git a/server/src/main/java/au/org/aodn/ogcapi/server/core/model/enumeration/CQLFields.java b/server/src/main/java/au/org/aodn/ogcapi/server/core/model/enumeration/CQLFields.java
index 53de0de3..d39c779c 100644
--- a/server/src/main/java/au/org/aodn/ogcapi/server/core/model/enumeration/CQLFields.java
+++ b/server/src/main/java/au/org/aodn/ogcapi/server/core/model/enumeration/CQLFields.java
@@ -104,10 +104,10 @@ public enum CQLFields implements CQLFieldsInterface {
(order) -> new SortOptions.Builder().script(s -> s
.type(ScriptSortType.Number)
.nested(NestedSortValue.of(p -> p.path(StacSummeries.Temporal.sortField)))
- .script(script -> script.inline(line -> line
+ .script(script -> script
.lang("painless")
.source("if (doc['" + StacSummeries.TemporalEnd.searchField + "'].size() == 0) {" +
- " return Long.MAX_VALUE; " +
+ " return Long.MAX_VALUE; " +
" } " +
" else {" +
" return doc['" + StacSummeries.TemporalEnd.searchField + "'].stream()" +
@@ -115,7 +115,7 @@ public enum CQLFields implements CQLFieldsInterface {
" .max()" +
" .getAsLong()" +
" }"
- ))
+ )
).order(order)
)
),
@@ -312,22 +312,23 @@ public enum CQLFields implements CQLFieldsInterface {
@Override
public Query getPropertyEqualToQuery(String literal) {
- if(getOverridePropertyEqualsToQuery() == null) {
+ if (getOverridePropertyEqualsToQuery() == null) {
return MatchPhraseQuery.of(builder -> builder
.field(this.searchField)
.query(literal)
)._toQuery();
- }
- else {
+ } else {
return getOverridePropertyEqualsToQuery().apply(literal);
}
}
@Override
public Query getPropertyGreaterThanOrEqualsToQuery(String literal) {
- return RangeQuery.of(builder -> builder
- .field(this.searchField)
- .gte(JsonData.of(literal))
+ return RangeQuery.of(builder -> builder
+ // set as untyped because the property type is uncertain
+ .untyped(u -> u
+ .field(this.searchField)
+ .gte(JsonData.of(literal)))
)._toQuery();
}
@@ -354,7 +355,7 @@ public Query getBoundingBoxQuery(TopLeftBottomRightGeoBounds tlbr) {
@Override
public Query getIsNullQuery() {
Query fieldExist = ExistsQuery.of(f -> f
- .field(this.searchField))._toQuery();
+ .field(this.searchField))._toQuery();
return BoolQuery.of(b -> b
.mustNot(fieldExist))._toQuery();
@@ -368,8 +369,10 @@ public Query getLikeQuery(String literal) {
.flags("ALL")
.value(literal))._toQuery();
}
+
/**
* Given param, find any of those is not a valid CQLCollectionsField
+ *
* @param args -
* @return Invalid enum
*/
@@ -379,8 +382,7 @@ public static List findInvalidEnum(List args) {
try {
CQLFields.valueOf(str);
return false;
- }
- catch (IllegalArgumentException e) {
+ } catch (IllegalArgumentException e) {
return true;
}
})
diff --git a/server/src/main/java/au/org/aodn/ogcapi/server/core/parser/elastic/AfterImpl.java b/server/src/main/java/au/org/aodn/ogcapi/server/core/parser/elastic/AfterImpl.java
index 7ae9a39c..4fc19139 100644
--- a/server/src/main/java/au/org/aodn/ogcapi/server/core/parser/elastic/AfterImpl.java
+++ b/server/src/main/java/au/org/aodn/ogcapi/server/core/parser/elastic/AfterImpl.java
@@ -3,7 +3,6 @@
import au.org.aodn.ogcapi.server.core.model.enumeration.CQLFields;
import au.org.aodn.ogcapi.server.core.model.enumeration.CQLFieldsInterface;
import au.org.aodn.ogcapi.server.core.model.enumeration.StacSummeries;
-import co.elastic.clients.json.JsonData;
import org.geotools.filter.AttributeExpressionImpl;
import org.geotools.filter.LiteralExpressionImpl;
import org.geotools.filter.text.cql2.CQLException;
@@ -42,9 +41,10 @@ public AfterImpl(Expression expression1, Expression expression2, Class enumTy
.path(StacSummeries.Temporal.searchField)
.query(q1 -> q1
.range(r -> r
- .field(StacSummeries.TemporalStart.searchField)
- .gte(JsonData.of(dateFormatter.format(literal.getValue())))
- .format("strict_date_optional_time")
+ .date(d -> d
+ .field(StacSummeries.TemporalStart.searchField)
+ .gte(dateFormatter.format(literal.getValue()))
+ .format("strict_date_optional_time"))
)
)
)._toQuery();
diff --git a/server/src/main/java/au/org/aodn/ogcapi/server/core/parser/elastic/BeforeImpl.java b/server/src/main/java/au/org/aodn/ogcapi/server/core/parser/elastic/BeforeImpl.java
index 7cfef21a..671d9603 100644
--- a/server/src/main/java/au/org/aodn/ogcapi/server/core/parser/elastic/BeforeImpl.java
+++ b/server/src/main/java/au/org/aodn/ogcapi/server/core/parser/elastic/BeforeImpl.java
@@ -4,7 +4,6 @@
import au.org.aodn.ogcapi.server.core.model.enumeration.CQLFieldsInterface;
import au.org.aodn.ogcapi.server.core.model.enumeration.StacSummeries;
import co.elastic.clients.elasticsearch._types.query_dsl.NestedQuery;
-import co.elastic.clients.json.JsonData;
import org.geotools.filter.AttributeExpressionImpl;
import org.geotools.filter.LiteralExpressionImpl;
import org.geotools.filter.text.cql2.CQLException;
@@ -42,9 +41,10 @@ public BeforeImpl(Expression expression1, Expression expression2, Class enumT
.path(StacSummeries.Temporal.searchField)
.query(q1 -> q1
.range(r -> r
- .field(StacSummeries.TemporalEnd.searchField)
- .lte(JsonData.of(dateFormatter.format(literal.getValue())))
- .format("strict_date_optional_time")
+ .date(d -> d
+ .field(StacSummeries.TemporalEnd.searchField)
+ .lte(dateFormatter.format(literal.getValue()))
+ .format("strict_date_optional_time"))
)
)
)._toQuery();
diff --git a/server/src/main/java/au/org/aodn/ogcapi/server/core/parser/elastic/DuringImpl.java b/server/src/main/java/au/org/aodn/ogcapi/server/core/parser/elastic/DuringImpl.java
index 778c8af1..017f785d 100644
--- a/server/src/main/java/au/org/aodn/ogcapi/server/core/parser/elastic/DuringImpl.java
+++ b/server/src/main/java/au/org/aodn/ogcapi/server/core/parser/elastic/DuringImpl.java
@@ -7,7 +7,6 @@
import co.elastic.clients.elasticsearch._types.query_dsl.NestedQuery;
import co.elastic.clients.elasticsearch._types.query_dsl.Query;
import co.elastic.clients.elasticsearch._types.query_dsl.RangeQuery;
-import co.elastic.clients.json.JsonData;
import org.geotools.filter.AttributeExpressionImpl;
import org.geotools.filter.LiteralExpressionImpl;
import org.geotools.filter.text.cql2.CQLException;
@@ -69,20 +68,22 @@ public DuringImpl(Expression expression1, Expression expression2, Class enumT
&& cqlFields == CQLFields.temporal) {
Query gte = RangeQuery.of(r -> r
+ .date(d -> d
.field(StacSummeries.TemporalStart.searchField)
- .gte(JsonData.of(dateFormatter.format(period.getBeginning().getPosition().getDate())))
- .format("strict_date_optional_time"))._toQuery();
+ .gte(dateFormatter.format(period.getBeginning().getPosition().getDate()))
+ .format("strict_date_optional_time")))._toQuery();
Query lte = RangeQuery.of(r -> r
+ .date(d -> d
.field(StacSummeries.TemporalEnd.searchField)
- .lte(JsonData.of(dateFormatter.format(period.getEnding().getPosition().getDate())))
- .format("strict_date_optional_time"))._toQuery();
+ .lte(dateFormatter.format(period.getEnding().getPosition().getDate()))
+ .format("strict_date_optional_time")))._toQuery();
this.query = NestedQuery.of(n -> n
.path(StacSummeries.Temporal.searchField)
- .query(BoolQuery.of(q -> q
- .must(gte, lte))._toQuery()
+ .query(BoolQuery.of(q -> q
+ .must(gte, lte))._toQuery()
)
)._toQuery();
}
diff --git a/server/src/main/java/au/org/aodn/ogcapi/server/core/service/ElasticSearchBase.java b/server/src/main/java/au/org/aodn/ogcapi/server/core/service/ElasticSearchBase.java
index 9cbb44de..0d4715bf 100644
--- a/server/src/main/java/au/org/aodn/ogcapi/server/core/service/ElasticSearchBase.java
+++ b/server/src/main/java/au/org/aodn/ogcapi/server/core/service/ElasticSearchBase.java
@@ -178,7 +178,7 @@ protected SearchResult searchCollectionBy(final List
builder.query(q -> q.scriptScore(ss -> ss
// to get the original _score from ELasticsearch
.query(bq -> bq.bool(createBoolQueryForProperties(queries, should, filters)))
- .script(s -> s.inline(i -> i
+ .script(s -> s
.lang("painless")
.source(
// Step 1: Retrieve internal quality score from summaries.score field
@@ -197,7 +197,6 @@ protected SearchResult searchCollectionBy(final List
// Final score = Elasticsearch relevance * normalized quality
"return _score * multiplier;"
)
- )
))
);
}
diff --git a/server/src/test/resources/application-test.yaml b/server/src/test/resources/application-test.yaml
index 73070b6f..fd525ac6 100644
--- a/server/src/test/resources/application-test.yaml
+++ b/server/src/test/resources/application-test.yaml
@@ -1,6 +1,6 @@
ogcapi:
docker:
- elasticVersion: "8.13.3"
+ elasticVersion: "8.19.10"
elasticsearch:
index: