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); + } }