@@ -18,7 +18,7 @@ import app.softnetwork.elastic.sql.query.{
1818}
1919import com .sksamuel .elastic4s .ElasticApi ._
2020import com .sksamuel .elastic4s .FetchSourceContext
21- import com .sksamuel .elastic4s .searches .queries .Query
21+ import com .sksamuel .elastic4s .searches .queries .{ InnerHit , Query }
2222
2323import scala .annotation .tailrec
2424
@@ -47,7 +47,6 @@ case class ElasticQuery(filter: ElasticFilter) {
4747 .query(innerHitsNames + innerHitsName.getOrElse(" " ), boolQuery)
4848
4949 val nestedElements : Seq [NestedElement ] = criteria.nestedElements.sortBy(_.level)
50- nestedElements.foreach(n => println(s " nestedElement: ${n.path}, level: ${n.level}" ))
5150
5251 val nestedParentsPath
5352 : collection.mutable.Map [String , (NestedElement , Seq [NestedElement ])] =
@@ -73,6 +72,24 @@ case class ElasticQuery(filter: ElasticFilter) {
7372
7473 val nestedParents = getNestedParents(nestedElements.last, Seq .empty)
7574
75+ def nestedInner (n : NestedElement ): InnerHit = {
76+ var inner = innerHits(n.innerHitsName)
77+ n.size match {
78+ case Some (s) =>
79+ inner = inner.from(0 ).size(s)
80+ case _ =>
81+ }
82+ if (n.sources.nonEmpty) {
83+ inner = inner.fetchSource(
84+ FetchSourceContext (
85+ fetchSource = true ,
86+ includes = n.sources.toArray
87+ )
88+ )
89+ }
90+ inner
91+ }
92+
7693 def buildNestedQuery (n : NestedElement ): Query = {
7794 val children = nestedParentsPath.get(n.path).map(_._2).getOrElse(Seq .empty)
7895 if (children.nonEmpty) {
@@ -87,25 +104,15 @@ case class ElasticQuery(filter: ElasticFilter) {
87104 combinedQuery
88105 ) /* .scoreMode(ScoreMode.None)*/
89106 .inner(
90- innerHits(n.innerHitsName)
91- .from(0 )
92- .size(n.size.getOrElse(3 ))
93- .fetchSource(
94- FetchSourceContext (fetchSource = true , includes = n.sources.toArray)
95- )
107+ nestedInner(n)
96108 )
97109 } else {
98110 nestedQuery(
99111 n.path,
100112 q
101113 ) /* .scoreMode(ScoreMode.None)*/
102114 .inner(
103- innerHits(n.innerHitsName)
104- .from(0 )
105- .size(n.size.getOrElse(3 ))
106- .fetchSource(
107- FetchSourceContext (fetchSource = true , includes = n.sources.toArray)
108- )
115+ nestedInner(n)
109116 )
110117 }
111118 }
0 commit comments