From 6d1c232acdd224d0e84184f3b0fb6812a9d9a4eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Manciot?= Date: Wed, 19 Nov 2025 08:54:09 +0100 Subject: [PATCH 1/2] fix terms agg --- README.md | 10 +++--- .../sql/bridge/ElasticAggregation.scala | 4 +-- .../elastic/sql/SQLQuerySpec.scala | 24 +++++++------- build.sbt | 2 +- .../sql/bridge/ElasticAggregation.scala | 4 +-- .../elastic/sql/SQLQuerySpec.scala | 31 ++++++++++++------- 6 files changed, 41 insertions(+), 34 deletions(-) diff --git a/README.md b/README.md index db696f36..bccc96fc 100644 --- a/README.md +++ b/README.md @@ -787,18 +787,18 @@ ThisBuild / resolvers ++= Seq( // For Elasticsearch 6 // Using Jest client -libraryDependencies += "app.softnetwork.elastic" %% s"softclient4es6-jest-client" % 0.13.0 +libraryDependencies += "app.softnetwork.elastic" %% s"softclient4es6-jest-client" % 0.13.1 // Or using Rest High Level client -libraryDependencies += "app.softnetwork.elastic" %% s"softclient4es6-rest-client" % 0.13.0 +libraryDependencies += "app.softnetwork.elastic" %% s"softclient4es6-rest-client" % 0.13.1 // For Elasticsearch 7 -libraryDependencies += "app.softnetwork.elastic" %% s"softclient4es7-rest-client" % 0.13.0 +libraryDependencies += "app.softnetwork.elastic" %% s"softclient4es7-rest-client" % 0.13.1 // For Elasticsearch 8 -libraryDependencies += "app.softnetwork.elastic" %% s"softclient4es8-java-client" % 0.13.0 +libraryDependencies += "app.softnetwork.elastic" %% s"softclient4es8-java-client" % 0.13.1 // For Elasticsearch 9 -libraryDependencies += "app.softnetwork.elastic" %% s"softclient4es9-java-client" % 0.13.0 +libraryDependencies += "app.softnetwork.elastic" %% s"softclient4es9-java-client" % 0.13.1 ``` ### **Quick Example** diff --git a/bridge/src/main/scala/app/softnetwork/elastic/sql/bridge/ElasticAggregation.scala b/bridge/src/main/scala/app/softnetwork/elastic/sql/bridge/ElasticAggregation.scala index 51b3766b..fa7aad1c 100644 --- a/bridge/src/main/scala/app/softnetwork/elastic/sql/bridge/ElasticAggregation.scala +++ b/bridge/src/main/scala/app/softnetwork/elastic/sql/bridge/ElasticAggregation.scala @@ -271,13 +271,13 @@ object ElasticAggregation { var agg = { bucketsDirection.get(bucket.identifier.identifierName) match { case Some(direction) => - termsAgg(bucket.name, s"$currentBucketPath.keyword") + termsAgg(bucket.name, currentBucketPath) .order(Seq(direction match { case Asc => TermsOrder("_key", asc = true) case _ => TermsOrder("_key", asc = false) })) case None => - termsAgg(bucket.name, s"$currentBucketPath.keyword") + termsAgg(bucket.name, currentBucketPath) } } bucket.size.foreach(s => agg = agg.size(s)) diff --git a/bridge/src/test/scala/app/softnetwork/elastic/sql/SQLQuerySpec.scala b/bridge/src/test/scala/app/softnetwork/elastic/sql/SQLQuerySpec.scala index 8a41ae9d..1a7651b2 100644 --- a/bridge/src/test/scala/app/softnetwork/elastic/sql/SQLQuerySpec.scala +++ b/bridge/src/test/scala/app/softnetwork/elastic/sql/SQLQuerySpec.scala @@ -530,7 +530,7 @@ class SQLQuerySpec extends AnyFlatSpec with Matchers { | "aggs": { | "Country": { | "terms": { - | "field": "Country.keyword", + | "field": "Country", | "exclude": ["USA"], | "order": { | "_key": "asc" @@ -539,7 +539,7 @@ class SQLQuerySpec extends AnyFlatSpec with Matchers { | "aggs": { | "City": { | "terms": { - | "field": "City.keyword", + | "field": "City", | "exclude": ["Berlin"], | "order": { | "cnt": "desc" @@ -793,7 +793,7 @@ class SQLQuerySpec extends AnyFlatSpec with Matchers { | "aggs": { | "cat": { | "terms": { - | "field": "products.category.keyword", + | "field": "products.category", | "size": 10 | }, | "aggs": { @@ -1009,7 +1009,7 @@ class SQLQuerySpec extends AnyFlatSpec with Matchers { | "aggs": { | "userId": { | "terms": { - | "field": "userId.keyword" + | "field": "userId" | }, | "aggs": { | "lastSeen": { @@ -1053,7 +1053,7 @@ class SQLQuerySpec extends AnyFlatSpec with Matchers { | "aggs": { | "Country": { | "terms": { - | "field": "Country.keyword", + | "field": "Country", | "exclude": ["USA"], | "order": { | "_key": "asc" @@ -1062,7 +1062,7 @@ class SQLQuerySpec extends AnyFlatSpec with Matchers { | "aggs": { | "City": { | "terms": { - | "field": "City.keyword", + | "field": "City", | "exclude": ["Berlin"] | }, | "aggs": { @@ -1118,7 +1118,7 @@ class SQLQuerySpec extends AnyFlatSpec with Matchers { | "aggs": { | "Country": { | "terms": { - | "field": "Country.keyword", + | "field": "Country", | "exclude": [ | "USA" | ], @@ -1129,7 +1129,7 @@ class SQLQuerySpec extends AnyFlatSpec with Matchers { | "aggs": { | "City": { | "terms": { - | "field": "City.keyword", + | "field": "City", | "exclude": [ | "Berlin" | ] @@ -1193,7 +1193,7 @@ class SQLQuerySpec extends AnyFlatSpec with Matchers { | "aggs": { | "identifier": { | "terms": { - | "field": "identifier.keyword", + | "field": "identifier", | "order": { | "ct": "desc" | } @@ -1360,7 +1360,7 @@ class SQLQuerySpec extends AnyFlatSpec with Matchers { | "aggs": { | "identifier": { | "terms": { - | "field": "identifier.keyword", + | "field": "identifier", | "order": { | "ct": "desc" | } @@ -1517,7 +1517,7 @@ class SQLQuerySpec extends AnyFlatSpec with Matchers { | "aggs": { | "identifier": { | "terms": { - | "field": "identifier.keyword" + | "field": "identifier" | }, | "aggs": { | "max_diff": { @@ -2758,7 +2758,7 @@ class SQLQuerySpec extends AnyFlatSpec with Matchers { | "aggs": { | "dept": { | "terms": { - | "field": "department.keyword" + | "field": "department" | }, | "aggs": { | "cnt": { diff --git a/build.sbt b/build.sbt index 38774a28..cdf10c17 100644 --- a/build.sbt +++ b/build.sbt @@ -19,7 +19,7 @@ ThisBuild / organization := "app.softnetwork" name := "softclient4es" -ThisBuild / version := "0.13.0" +ThisBuild / version := "0.13.1" ThisBuild / scalaVersion := scala213 diff --git a/es6/bridge/src/main/scala/app/softnetwork/elastic/sql/bridge/ElasticAggregation.scala b/es6/bridge/src/main/scala/app/softnetwork/elastic/sql/bridge/ElasticAggregation.scala index be7d57ed..f1499574 100644 --- a/es6/bridge/src/main/scala/app/softnetwork/elastic/sql/bridge/ElasticAggregation.scala +++ b/es6/bridge/src/main/scala/app/softnetwork/elastic/sql/bridge/ElasticAggregation.scala @@ -268,13 +268,13 @@ object ElasticAggregation { var agg = { bucketsDirection.get(bucket.identifier.identifierName) match { case Some(direction) => - termsAgg(bucket.name, s"$currentBucketPath.keyword") + termsAgg(bucket.name, currentBucketPath) .order(Seq(direction match { case Asc => TermsOrder("_key", asc = true) case _ => TermsOrder("_key", asc = false) })) case None => - termsAgg(bucket.name, s"$currentBucketPath.keyword") + termsAgg(bucket.name, currentBucketPath) } } bucket.size.foreach(s => agg = agg.size(s)) diff --git a/es6/bridge/src/test/scala/app/softnetwork/elastic/sql/SQLQuerySpec.scala b/es6/bridge/src/test/scala/app/softnetwork/elastic/sql/SQLQuerySpec.scala index d28b409f..29ffaa51 100644 --- a/es6/bridge/src/test/scala/app/softnetwork/elastic/sql/SQLQuerySpec.scala +++ b/es6/bridge/src/test/scala/app/softnetwork/elastic/sql/SQLQuerySpec.scala @@ -530,7 +530,7 @@ class SQLQuerySpec extends AnyFlatSpec with Matchers { | "aggs": { | "Country": { | "terms": { - | "field": "Country.keyword", + | "field": "Country", | "exclude": "USA", | "order": { | "_key": "asc" @@ -539,7 +539,7 @@ class SQLQuerySpec extends AnyFlatSpec with Matchers { | "aggs": { | "City": { | "terms": { - | "field": "City.keyword", + | "field": "City", | "exclude": "Berlin", | "order": { | "cnt": "desc" @@ -793,7 +793,7 @@ class SQLQuerySpec extends AnyFlatSpec with Matchers { | "aggs": { | "cat": { | "terms": { - | "field": "products.category.keyword", + | "field": "products.category", | "size": 10 | }, | "aggs": { @@ -1009,7 +1009,7 @@ class SQLQuerySpec extends AnyFlatSpec with Matchers { | "aggs": { | "userId": { | "terms": { - | "field": "userId.keyword" + | "field": "userId" | }, | "aggs": { | "lastSeen": { @@ -1053,7 +1053,7 @@ class SQLQuerySpec extends AnyFlatSpec with Matchers { | "aggs": { | "Country": { | "terms": { - | "field": "Country.keyword", + | "field": "Country", | "exclude": "USA", | "order": { | "_key": "asc" @@ -1062,7 +1062,7 @@ class SQLQuerySpec extends AnyFlatSpec with Matchers { | "aggs": { | "City": { | "terms": { - | "field": "City.keyword", + | "field": "City", | "exclude": "Berlin" | }, | "aggs": { @@ -1118,7 +1118,7 @@ class SQLQuerySpec extends AnyFlatSpec with Matchers { | "aggs": { | "Country": { | "terms": { - | "field": "Country.keyword", + | "field": "Country", | "exclude": "USA", | "order": { | "_key": "asc" @@ -1127,7 +1127,7 @@ class SQLQuerySpec extends AnyFlatSpec with Matchers { | "aggs": { | "City": { | "terms": { - | "field": "City.keyword", + | "field": "City", | "exclude": "Berlin" | }, | "aggs": { @@ -1189,7 +1189,7 @@ class SQLQuerySpec extends AnyFlatSpec with Matchers { | "aggs": { | "identifier": { | "terms": { - | "field": "identifier.keyword", + | "field": "identifier", | "order": { | "ct": "desc" | } @@ -1356,7 +1356,7 @@ class SQLQuerySpec extends AnyFlatSpec with Matchers { | "aggs": { | "identifier": { | "terms": { - | "field": "identifier.keyword", + | "field": "identifier", | "order": { | "ct": "desc" | } @@ -1513,7 +1513,7 @@ class SQLQuerySpec extends AnyFlatSpec with Matchers { | "aggs": { | "identifier": { | "terms": { - | "field": "identifier.keyword" + | "field": "identifier" | }, | "aggs": { | "max_diff": { @@ -2754,7 +2754,7 @@ class SQLQuerySpec extends AnyFlatSpec with Matchers { | "aggs": { | "dept": { | "terms": { - | "field": "department.keyword" + | "field": "department" | }, | "aggs": { | "cnt": { @@ -3729,4 +3729,11 @@ class SQLQuerySpec extends AnyFlatSpec with Matchers { |}""".stripMargin.replaceAll("\\s+", "") } + it should "test" in { + val query = + """SELECT name FROM users WHERE status = 'active' AND age > 25 + |""".stripMargin + val select: ElasticSearchRequest = SQLQuery(query) + println(select.query) + } } From 2181ac26380b0941d888cd0070e2bb7d3643e4f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Manciot?= Date: Wed, 19 Nov 2025 09:06:04 +0100 Subject: [PATCH 2/2] remove .keyword --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index bccc96fc..cfbc96a2 100644 --- a/README.md +++ b/README.md @@ -264,13 +264,13 @@ val results = client.search(SQLQuery(sqlQuery)) "aggs": { "restaurant_name": { "terms": { - "field": "restaurant_name.keyword", + "field": "restaurant_name", "size": 1000 }, "aggs": { "restaurant_city": { "terms": { - "field": "restaurant_city.keyword", + "field": "restaurant_city", "size": 1000 }, "aggs": { @@ -296,7 +296,7 @@ val results = client.search(SQLQuery(sqlQuery)) "aggs": { "menu_category": { "terms": { - "field": "menus.category.keyword", + "field": "menus.category", "size": 1000 }, "aggs": { @@ -307,7 +307,7 @@ val results = client.search(SQLQuery(sqlQuery)) "aggs": { "dish_name": { "terms": { - "field": "menus.dishes.name.keyword", + "field": "menus.dishes.name", "size": 1000 }, "aggs": { @@ -339,7 +339,7 @@ val results = client.search(SQLQuery(sqlQuery)) }, "ingredient_name": { "terms": { - "field": "menus.dishes.ingredients.name.keyword", + "field": "menus.dishes.ingredients.name", "size": 1000 }, "aggs": {