diff --git a/CHANGELOG.adoc b/CHANGELOG.adoc
index b4cfaba51..d3d5bfeb6 100644
--- a/CHANGELOG.adoc
+++ b/CHANGELOG.adoc
@@ -8,6 +8,10 @@ and this project adheres to https://semver.org/spec/v2.0.0.html[Semantic Version
== [Unreleased]
+=== Changed
+
+- Update Elasticsearch driver to 8.17.4
+
=== Fixed
- Fixes delete all at CouchDB
diff --git a/jnosql-elasticsearch/pom.xml b/jnosql-elasticsearch/pom.xml
index 07355a8f9..818a44a38 100644
--- a/jnosql-elasticsearch/pom.xml
+++ b/jnosql-elasticsearch/pom.xml
@@ -28,8 +28,7 @@
The Eclipse JNoSQL layer to Elasticsearch
- 8.14.3
-
+ 8.17.4
diff --git a/jnosql-elasticsearch/src/main/java/org/eclipse/jnosql/databases/elasticsearch/communication/QueryConverter.java b/jnosql-elasticsearch/src/main/java/org/eclipse/jnosql/databases/elasticsearch/communication/QueryConverter.java
index 74fce7d87..23c381b29 100644
--- a/jnosql-elasticsearch/src/main/java/org/eclipse/jnosql/databases/elasticsearch/communication/QueryConverter.java
+++ b/jnosql-elasticsearch/src/main/java/org/eclipse/jnosql/databases/elasticsearch/communication/QueryConverter.java
@@ -114,60 +114,65 @@ private static IndexMappingRecord getIndexMappingRecord(ElasticsearchClient clie
private static Query.Builder getCondition(IndexMappingRecord indexMappingRecord, CriteriaCondition condition) {
Element document = condition.element();
-
+ String fieldName = document.name();
+ JsonData value = JsonData.of(document.value().get());
switch (condition.condition()) {
case EQUALS:
- if (supportTermQuery(indexMappingRecord, document.name())) {
+ if (supportTermQuery(indexMappingRecord, fieldName)) {
return (Query.Builder) new Query.Builder()
.term(TermQuery.of(tq -> tq
- .field(document.name())
+ .field(fieldName)
.value(v -> v
- .anyValue(JsonData.of(document.value().get())))));
+ .anyValue(value))));
}
return (Query.Builder) new Query.Builder()
.match(MatchQuery.of(tq -> tq
- .field(document.name())
+ .field(fieldName)
.query(v -> v
- .anyValue(JsonData.of(document.value().get())))));
+ .anyValue(value))));
case LESSER_THAN:
return (Query.Builder) new Query.Builder()
.range(RangeQuery.of(rq -> rq
- .field(document.name())
- .lt(JsonData.of(document.value().get()))));
+ .untyped(u -> u
+ .field(fieldName)
+ .lt(value))));
case LESSER_EQUALS_THAN:
return (Query.Builder) new Query.Builder()
.range(RangeQuery.of(rq -> rq
- .field(document.name())
- .lte(JsonData.of(document.value().get()))));
+ .untyped(u -> u
+ .field(fieldName)
+ .lte(value))));
case GREATER_THAN:
return (Query.Builder) new Query.Builder()
.range(RangeQuery.of(rq -> rq
- .field(document.name())
- .gt(JsonData.of(document.value().get()))));
+ .untyped(u -> u
+ .field(fieldName)
+ .gt(value))));
case GREATER_EQUALS_THAN:
return (Query.Builder) new Query.Builder()
.range(RangeQuery.of(rq -> rq
- .field(document.name())
- .gte(JsonData.of(document.value().get()))));
+ .untyped(u -> u
+ .field(fieldName)
+ .gte(value))));
case LIKE:
return (Query.Builder) new Query.Builder()
.queryString(QueryStringQuery.of(rq -> rq
.query(document.value().get(String.class))
.allowLeadingWildcard(true)
- .fields(document.name())));
+ .fields(fieldName)));
case IN:
return (Query.Builder) ValueUtil.convertToList(document.value())
.stream()
.map(val -> {
- if (supportTermQuery(indexMappingRecord, document.name())) {
+ if (supportTermQuery(indexMappingRecord, fieldName)) {
return new Query.Builder()
.term(TermQuery.of(tq -> tq
- .field(document.name())
+ .field(fieldName)
.value(v -> v.anyValue(JsonData.of(val)))));
}
return new Query.Builder()
.match(MatchQuery.of(tq -> tq
- .field(document.name())
+ .field(fieldName)
.query(v -> v.anyValue(JsonData.of(val)))));
})
.reduce((d1, d2) -> new Query.Builder()
diff --git a/jnosql-elasticsearch/src/test/java/org/eclipse/jnosql/databases/elasticsearch/communication/DocumentDatabase.java b/jnosql-elasticsearch/src/test/java/org/eclipse/jnosql/databases/elasticsearch/communication/DocumentDatabase.java
index 5fbb6cd8c..536f978fe 100644
--- a/jnosql-elasticsearch/src/test/java/org/eclipse/jnosql/databases/elasticsearch/communication/DocumentDatabase.java
+++ b/jnosql-elasticsearch/src/test/java/org/eclipse/jnosql/databases/elasticsearch/communication/DocumentDatabase.java
@@ -43,7 +43,7 @@ public enum DocumentDatabase implements Supplier {
- @Query("select * from Book where author.name = @name")
+ @Query("where author.name = :name")
Stream findByAuthorName(@Param("name") String name);
Stream findByTitleLike(String title);
+ Stream findByEditionGreaterThanEqual(int edition);
}
diff --git a/jnosql-elasticsearch/src/test/java/org/eclipse/jnosql/databases/elasticsearch/integration/RepositoryIntegrationTest.java b/jnosql-elasticsearch/src/test/java/org/eclipse/jnosql/databases/elasticsearch/integration/RepositoryIntegrationTest.java
index cf64ab022..3c5bdc20c 100644
--- a/jnosql-elasticsearch/src/test/java/org/eclipse/jnosql/databases/elasticsearch/integration/RepositoryIntegrationTest.java
+++ b/jnosql-elasticsearch/src/test/java/org/eclipse/jnosql/databases/elasticsearch/integration/RepositoryIntegrationTest.java
@@ -214,5 +214,39 @@ public void shouldFindByTitleLike() {
.containsAll(allMagazines));
}
+ @Test
+ public void shouldFindByEditionBetween() {
+ Author joshuaBloch = new Author("Joshua Bloch");
+ var magazine1 = new Magazine(randomUUID().toString(), "Effective Java", 1, joshuaBloch);
+ var magazine2 = magazine1.newEdition();
+ var magazine3 = magazine2.newEdition();
+ var magazine4 = magazine3.newEdition();
+ var magazine5 = magazine4.newEdition();
+ var magazine6 = magazine5.newEdition();
+ var magazine7 = magazine6.newEdition();
+
+ List allMagazines = List.of(
+ magazine1,
+ magazine2,
+ magazine3,
+ magazine4,
+ magazine5,
+ magazine6,
+ magazine7);
+
+ library.saveAll(allMagazines);
+
+ List magazinesGreaterThanEquals = allMagazines
+ .stream()
+ .dropWhile(m -> magazine3.edition() > m.edition())
+ .toList();
+
+ await().until(() ->
+ !library.findByEditionGreaterThanEqual(magazine3.edition()).toList().isEmpty());
+
+ var magazines = library.findByEditionGreaterThanEqual(magazine3.edition()).toList();
+ assertThat(magazines)
+ .containsAll(magazinesGreaterThanEquals);
+ }
}