Skip to content

Commit 2a3c422

Browse files
committed
init support for elasticsearch v9
1 parent af13c3f commit 2a3c422

File tree

11 files changed

+175
-101
lines changed

11 files changed

+175
-101
lines changed

.github/workflows/build.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,10 @@ jobs:
3232
steps:
3333
- name: Checkout
3434
uses: actions/checkout@v3
35-
- name: Set up JDK 8
35+
- name: Set up JDK 17
3636
uses: actions/setup-java@v3
3737
with:
38-
java-version: '8'
38+
java-version: '17'
3939
distribution: 'temurin'
4040
# cache: 'sbt'
4141
- name: Setup sbt launcher
@@ -50,10 +50,10 @@ jobs:
5050
steps:
5151
- name: Checkout
5252
uses: actions/checkout@v3
53-
- name: Set up JDK 8
53+
- name: Set up JDK 17
5454
uses: actions/setup-java@v3
5555
with:
56-
java-version: '8'
56+
java-version: '17'
5757
distribution: 'temurin'
5858
# cache: 'sbt'
5959
- name: Setup sbt launcher

.github/workflows/release.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,10 @@ jobs:
2929
steps:
3030
- name: Checkout
3131
uses: actions/checkout@v3
32-
- name: Set up JDK 8
32+
- name: Set up JDK 17
3333
uses: actions/setup-java@v3
3434
with:
35-
java-version: '8'
35+
java-version: '17'
3636
distribution: 'temurin'
3737
# cache: 'sbt'
3838
- name: Setup sbt launcher
@@ -46,7 +46,7 @@ jobs:
4646
- name: Upload coverage to Codecov
4747
uses: codecov/codecov-action@v3
4848
with:
49-
files: sql/target/scala-2.12/coverage-report/cobertura.xml,client/testkit/target/scala-2.12/coverage-report/cobertura.xml,persistence/target/scala-2.12/coverage-report/cobertura.xml,teskit/target/scala-2.12/coverage-report/cobertura.xml
49+
files: sql/target/scala-2.13/coverage-report/cobertura.xml,client/testkit/target/scala-2.13/coverage-report/cobertura.xml,java/testkit/target/scala-2.13/coverage-report/cobertura.xml,persistence/target/scala-2.13/coverage-report/cobertura.xml,teskit/target/scala-2.13/coverage-report/cobertura.xml
5050
flags: unittests
5151
fail_ci_if_error: false
5252
verbose: true

build.sbt

Lines changed: 52 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,45 @@ import app.softnetwork.*
44
// Defaults
55
/////////////////////////////////
66

7+
lazy val scala213 = "2.13.16"
8+
lazy val javacCompilerVersion = "17"
9+
lazy val scalacCompilerOptions = Seq(
10+
"-deprecation",
11+
"-feature",
12+
"-target:jvm-1.8"
13+
)
14+
715
ThisBuild / organization := "app.softnetwork"
816

917
name := "elastic"
1018

11-
ThisBuild / version := Versions.elasticSearch
19+
ThisBuild / version := "9.0-SNAPSHOT" //Versions.elasticSearch
1220

13-
ThisBuild / scalaVersion := "2.12.18"
21+
ThisBuild / scalaVersion := scala213
1422

15-
ThisBuild / scalacOptions ++= Seq("-deprecation", "-feature", "-target:jvm-1.8", "-Ypartial-unification")
23+
ThisBuild / dependencyOverrides ++= Seq(
24+
"com.fasterxml.jackson.module" %% "jackson-module-scala" % Versions.jackson,
25+
"com.github.jnr" % "jnr-ffi" % "2.2.17",
26+
"com.github.jnr" % "jffi" % "1.3.13" classifier "native",
27+
"org.lmdbjava" % "lmdbjava" % "0.9.1" exclude("org.slf4j", "slf4j-api"),
28+
)
29+
30+
lazy val moduleSettings = Seq(
31+
crossScalaVersions := Seq(scala213),
32+
scalacOptions ++= {
33+
CrossVersion.partialVersion(scalaVersion.value) match {
34+
case Some((2, 12)) => scalacCompilerOptions :+ "-Ypartial-unification"
35+
case Some((2, 13)) => scalacCompilerOptions
36+
case _ => Seq.empty
37+
}
38+
}
39+
)
1640

17-
ThisBuild / javacOptions ++= Seq("-source", "1.8", "-target", "1.8")
41+
ThisBuild / javacOptions ++= Seq("-source", javacCompilerVersion, "-target", javacCompilerVersion)
1842

1943
ThisBuild / resolvers ++= Seq(
2044
"Softnetwork Server" at "https://softnetwork.jfrog.io/artifactory/releases/",
45+
"Softnetwork Snapshots" at "https://softnetwork.jfrog.io/artifactory/snapshots/",
2146
"Maven Central Server" at "https://repo1.maven.org/maven2",
2247
"Typesafe Server" at "https://repo.typesafe.com/typesafe/releases"
2348
)
@@ -32,6 +57,9 @@ val logging = Seq(
3257

3358
val jacksonExclusions = Seq(
3459
ExclusionRule(organization = "com.fasterxml.jackson.core"),
60+
ExclusionRule(organization = "com.fasterxml.jackson.dataformat"),
61+
ExclusionRule(organization = "com.fasterxml.jackson.datatype"),
62+
ExclusionRule(organization = "com.fasterxml.jackson.module"),
3563
ExclusionRule(organization = "org.codehaus.jackson")
3664
)
3765

@@ -41,7 +69,7 @@ val json4s = Seq(
4169
).map(_.excludeAll(jacksonExclusions: _*))
4270

4371
ThisBuild / libraryDependencies ++= Seq(
44-
"org.scala-lang.modules" %% "scala-parser-combinators" % "1.1.1"
72+
"org.scala-lang.modules" %% "scala-parser-combinators" % "1.1.2"
4573
)// ++ configDependencies ++ json4s ++ logging
4674

4775
ThisBuild / libraryDependencySchemes += "org.scala-lang.modules" %% "scala-xml" % VersionScheme.Always
@@ -54,21 +82,30 @@ lazy val sql = project.in(file("sql"))
5482

5583
lazy val client = project.in(file("client"))
5684
.configs(IntegrationTest)
57-
.settings(Defaults.itSettings)
85+
.settings(
86+
Defaults.itSettings,
87+
moduleSettings
88+
)
5889
.dependsOn(
5990
sql % "compile->compile;test->test;it->it"
6091
)
6192

6293
lazy val persistence = project.in(file("persistence"))
6394
.configs(IntegrationTest)
64-
.settings(Defaults.itSettings)
95+
.settings(
96+
Defaults.itSettings,
97+
moduleSettings
98+
)
6599
.dependsOn(
66100
client % "compile->compile;test->test;it->it"
67101
)
68102

69103
lazy val java = project.in(file("java"))
70104
.configs(IntegrationTest)
71-
.settings(Defaults.itSettings)
105+
.settings(
106+
Defaults.itSettings,
107+
moduleSettings
108+
)
72109
.dependsOn(
73110
persistence % "compile->compile;test->test;it->it"
74111
)
@@ -77,7 +114,8 @@ lazy val testKit = project.in(file("testkit"))
77114
.configs(IntegrationTest)
78115
.settings(
79116
Defaults.itSettings,
80-
app.softnetwork.Info.infoSettings
117+
app.softnetwork.Info.infoSettings,
118+
moduleSettings
81119
)
82120
.enablePlugins(BuildInfoPlugin)
83121
.dependsOn(
@@ -86,5 +124,9 @@ lazy val testKit = project.in(file("testkit"))
86124

87125
lazy val root = project.in(file("."))
88126
.configs(IntegrationTest)
89-
.settings(Defaults.itSettings, Publish.noPublishSettings)
127+
.settings(
128+
Defaults.itSettings,
129+
Publish.noPublishSettings,
130+
crossScalaVersions := Nil
131+
)
90132
.aggregate(sql, client, persistence, java, testKit)

client/build.sbt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,5 @@ val json4s = Seq(
2121
).map(_.excludeAll(jacksonExclusions: _*))
2222

2323
libraryDependencies ++= configDependencies ++ json4s :+
24-
"app.softnetwork.persistence" %% "persistence-core" % Versions.genericPersistence :+ "com.google.code.gson" % "gson" % Versions.gson
24+
("app.softnetwork.persistence" %% "persistence-core" % Versions.genericPersistence excludeAll(jacksonExclusions: _*)) :+
25+
"com.google.code.gson" % "gson" % Versions.gson

client/src/main/scala/app/softnetwork/elastic/client/package.scala

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import app.softnetwork.serialization._
77
import com.google.gson.{Gson, JsonElement, JsonObject}
88
import com.typesafe.config.{Config, ConfigFactory}
99
import com.typesafe.scalalogging.StrictLogging
10-
import configs.Configs
10+
import configs.ConfigReader
1111
import org.json4s.Formats
1212

1313
import scala.collection.immutable.Seq
@@ -33,8 +33,8 @@ package object client {
3333

3434
object ElasticConfig extends StrictLogging {
3535
def apply(config: Config): ElasticConfig = {
36-
Configs[ElasticConfig]
37-
.get(config.withFallback(ConfigFactory.load("softnetwork-elastic.conf")), "elastic")
36+
ConfigReader[ElasticConfig]
37+
.read(config.withFallback(ConfigFactory.load("softnetwork-elastic.conf")), "elastic")
3838
.toEither match {
3939
case Left(configError) =>
4040
logger.error(s"Something went wrong with the provided arguments $configError")

java/src/main/scala/app/softnetwork/elastic/client/java/ElasticsearchClientApi.scala

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -16,20 +16,16 @@ import co.elastic.clients.elasticsearch.core.bulk.{
1616
UpdateAction,
1717
UpdateOperation
1818
}
19-
import co.elastic.clients.elasticsearch.core.msearch.{
20-
MultisearchBody,
21-
MultisearchHeader,
22-
RequestItem
23-
}
19+
import co.elastic.clients.elasticsearch.core.msearch.{MultisearchHeader, RequestItem}
2420
import co.elastic.clients.elasticsearch.core._
21+
import co.elastic.clients.elasticsearch.core.search.SearchRequestBody
2522
import co.elastic.clients.elasticsearch.indices.update_aliases.{Action, AddAction, RemoveAction}
2623
import co.elastic.clients.elasticsearch.indices._
2724
import com.google.gson.JsonParser
2825

2926
import _root_.java.io.StringReader
3027
import _root_.java.util.{Map => JMap}
31-
32-
import scala.collection.JavaConverters.{collectionAsScalaIterableConverter, seqAsJavaListConverter}
28+
import scala.jdk.CollectionConverters._
3329
import org.json4s.Formats
3430

3531
import scala.concurrent.{ExecutionContext, Future, Promise}
@@ -274,18 +270,18 @@ trait ElasticsearchClientSingleValueAggregateApi
274270
aggType match {
275271
case sql.Count =>
276272
if (aggregation.distinct) {
277-
root.get(agg).cardinality().value()
273+
root.get(agg).cardinality().value().toDouble
278274
} else {
279-
root.get(agg).valueCount().value()
275+
root.get(agg).valueCount().value().toDouble
280276
}
281277
case sql.Sum =>
282-
root.get(agg).sum().value()
278+
root.get(agg).sum().value().toDouble
283279
case sql.Avg =>
284-
root.get(agg).avg().value()
280+
root.get(agg).avg().value().toDouble
285281
case sql.Min =>
286-
root.get(agg).min().value()
282+
root.get(agg).min().value().toDouble
287283
case sql.Max =>
288-
root.get(agg).max().value()
284+
root.get(agg).max().value().toDouble
289285
case _ => 0d
290286
},
291287
None
@@ -643,7 +639,7 @@ trait ElasticsearchClientSearchApi extends SearchApi with ElasticsearchClientCom
643639
val items = queries.map { query =>
644640
new RequestItem.Builder()
645641
.header(new MultisearchHeader.Builder().index(query.indices.asJava).build())
646-
.body(new MultisearchBody.Builder().withJson(new StringReader(query.query)).build())
642+
.body(new SearchRequestBody.Builder().withJson(new StringReader(query.query)).build())
647643
.build()
648644
}
649645

@@ -675,7 +671,7 @@ trait ElasticsearchClientSearchApi extends SearchApi with ElasticsearchClientCom
675671
val items = queries.map { query =>
676672
new RequestItem.Builder()
677673
.header(new MultisearchHeader.Builder().index(query.indices.asJava).build())
678-
.body(new MultisearchBody.Builder().withJson(new StringReader(query.query)).build())
674+
.body(new SearchRequestBody.Builder().withJson(new StringReader(query.query)).build())
679675
.build()
680676
}
681677

project/Versions.scala

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@ object Versions {
66

77
val typesafeConfig = "1.4.2"
88

9-
val kxbmap = "0.4.4"
9+
val kxbmap = "0.6.1"
1010

1111
val jackson = "2.19.0" // 2.13.3 -> 2.19.0
1212

13-
val json4s = "4.0.6" // 3.6.12 -> 4.0.6
13+
val json4s = "4.0.7" // 4.0.6 -> 4.0.7
1414

1515
val scalaLogging = "3.9.2"
1616

@@ -20,15 +20,15 @@ object Versions {
2020

2121
val log4s = "1.8.2"
2222

23-
val elasticSearch = "8.18.3"
23+
val elasticSearch = "9.0.3"
2424

25-
val elastic4s = "8.18.2"
25+
val elastic4s = "9.0.0"
2626

2727
val log4j = "2.8.2"
2828

2929
val testContainers = "1.18.0"
3030

31-
val genericPersistence = "0.7.1"
31+
val genericPersistence = "0.8-SNAPSHOT"
3232

3333
val gson = "2.8.0"
3434

sql/build.sbt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,12 @@ val jackson = Seq(
1010
"com.fasterxml.jackson.dataformat" % "jackson-dataformat-yaml" % Versions.jackson,
1111
"com.fasterxml.jackson.datatype" % "jackson-datatype-jdk8" % Versions.jackson,
1212
"com.fasterxml.jackson.datatype" % "jackson-datatype-jsr310" % Versions.jackson,
13-
"com.fasterxml.jackson.module" % "jackson-module-scala_2.12" % Versions.jackson,
1413
"com.fasterxml.jackson.module" % "jackson-module-parameter-names" % Versions.jackson,
1514
"com.fasterxml.jackson.module" %% "jackson-module-scala" % Versions.jackson,
1615
)
1716

1817
val elastic4s = Seq(
19-
"nl.gn0s1s" %% "elastic4s-core" % Versions.elastic4s exclude ("org.elasticsearch", "elasticsearch") exclude("org.slf4j", "slf4j-api"),
18+
"nl.gn0s1s" %% "elastic4s-core" % Versions.elastic4s exclude ("org.elasticsearch", "elasticsearch") exclude("org.slf4j", "slf4j-api"),
2019
)
2120

2221
val scalatest = Seq(
@@ -26,7 +25,7 @@ val scalatest = Seq(
2625
libraryDependencies ++= jackson ++ elastic4s ++ scalatest ++ Seq(
2726
"javax.activation" % "activation" % "1.1.1" % Test
2827
) :+
29-
"org.scala-lang" % "scala-reflect" % "2.12.18" :+
28+
"org.scala-lang" % "scala-reflect" % "2.13.16" :+
3029
"com.google.code.gson" % "gson" % Versions.gson % Test
3130

3231

sql/src/main/scala/app/softnetwork/elastic/sql/SQLWhere.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -461,7 +461,7 @@ case class ElasticGeoDistance(
461461
innerHitsNames: Set[String] = Set.empty,
462462
currentQuery: Option[ElasticBoolQuery]
463463
): Query = {
464-
geoDistanceQuery(identifier.columnName).point(lat.value, lon.value) distance distance.value
464+
geoDistanceQuery(identifier.columnName, lat.value, lon.value) distance distance.value
465465
}
466466
}
467467

0 commit comments

Comments
 (0)