diff --git a/elastic4s-core/src/main/scala/com/sksamuel/elastic4s/requests/searches/aggs/builders/FiltersAggregationBuilder.scala b/elastic4s-core/src/main/scala/com/sksamuel/elastic4s/requests/searches/aggs/builders/FiltersAggregationBuilder.scala index d27e0fa6c..4c1069bb5 100644 --- a/elastic4s-core/src/main/scala/com/sksamuel/elastic4s/requests/searches/aggs/builders/FiltersAggregationBuilder.scala +++ b/elastic4s-core/src/main/scala/com/sksamuel/elastic4s/requests/searches/aggs/builders/FiltersAggregationBuilder.scala @@ -11,7 +11,7 @@ object FiltersAggregationBuilder { val filters = { builder.startArray("filters") - val filters = agg.filters.map(QueryBuilderFn.apply).map(_.string).mkString(",") + val filters = agg.filters.map(QueryBuilderFn.apply).map(_.string).filter(_.nonEmpty).mkString(",") builder.rawValue(filters) builder.endArray() } diff --git a/elastic4s-handlers/src/main/scala/com/sksamuel/elastic4s/handlers/searches/queries/compound/BoolQueryBuilderFn.scala b/elastic4s-handlers/src/main/scala/com/sksamuel/elastic4s/handlers/searches/queries/compound/BoolQueryBuilderFn.scala index 912974d51..8cbf0e268 100644 --- a/elastic4s-handlers/src/main/scala/com/sksamuel/elastic4s/handlers/searches/queries/compound/BoolQueryBuilderFn.scala +++ b/elastic4s-handlers/src/main/scala/com/sksamuel/elastic4s/handlers/searches/queries/compound/BoolQueryBuilderFn.scala @@ -11,28 +11,28 @@ object BoolQueryBuilderFn { if (bool.must.nonEmpty) { builder.startArray("must") - val musts = bool.must.map(QueryBuilderFn.apply).map(_.string).mkString(",") + val musts = bool.must.map(QueryBuilderFn.apply).map(_.string).filter(_.nonEmpty).mkString(",") builder.rawValue(musts) builder.endArray() } if (bool.should.nonEmpty) { builder.startArray("should") - val should = bool.should.map(QueryBuilderFn.apply).map(_.string).mkString(",") + val should = bool.should.map(QueryBuilderFn.apply).map(_.string).filter(_.nonEmpty).mkString(",") builder.rawValue(should) builder.endArray() } if (bool.not.nonEmpty) { builder.startArray("must_not") - val nots = bool.not.map(QueryBuilderFn.apply).map(_.string).mkString(",") + val nots = bool.not.map(QueryBuilderFn.apply).map(_.string).filter(_.nonEmpty).mkString(",") builder.rawValue(nots) builder.endArray() } if (bool.filters.nonEmpty) { builder.startArray("filter") - val filters = bool.filters.map(QueryBuilderFn.apply).map(_.string).mkString(",") + val filters = bool.filters.map(QueryBuilderFn.apply).map(_.string).filter(_.nonEmpty).mkString(",") builder.rawValue(filters) builder.endArray() } diff --git a/elastic4s-handlers/src/main/scala/com/sksamuel/elastic4s/handlers/searches/queries/compound/DisMaxQueryBodyFn.scala b/elastic4s-handlers/src/main/scala/com/sksamuel/elastic4s/handlers/searches/queries/compound/DisMaxQueryBodyFn.scala index a1cb7cef9..56c8afb59 100644 --- a/elastic4s-handlers/src/main/scala/com/sksamuel/elastic4s/handlers/searches/queries/compound/DisMaxQueryBodyFn.scala +++ b/elastic4s-handlers/src/main/scala/com/sksamuel/elastic4s/handlers/searches/queries/compound/DisMaxQueryBodyFn.scala @@ -2,7 +2,7 @@ package com.sksamuel.elastic4s.handlers.searches.queries.compound import com.sksamuel.elastic4s.handlers.searches.queries.QueryBuilderFn import com.sksamuel.elastic4s.json.{XContentBuilder, XContentFactory} -import com.sksamuel.elastic4s.requests.searches.queries.DisMaxQuery +import com.sksamuel.elastic4s.requests.searches.queries.{DisMaxQuery, NoopQuery} object DisMaxQueryBodyFn { def apply(q: DisMaxQuery): XContentBuilder = { @@ -15,7 +15,7 @@ object DisMaxQueryBodyFn { builder.startArray("queries") // Workaround for bug where separator is not added with rawValues - q.queries.map(QueryBuilderFn.apply).foreach { query => + q.queries.map(QueryBuilderFn.apply).filter(_.string.nonEmpty).foreach { query => builder.rawValue(query) } builder.endArray() diff --git a/elastic4s-tests/src/test/scala/com/sksamuel/elastic4s/search/queries/NoopQueryTest.scala b/elastic4s-tests/src/test/scala/com/sksamuel/elastic4s/search/queries/NoopQueryTest.scala index 4f01bd4d3..adb07ad5c 100644 --- a/elastic4s-tests/src/test/scala/com/sksamuel/elastic4s/search/queries/NoopQueryTest.scala +++ b/elastic4s-tests/src/test/scala/com/sksamuel/elastic4s/search/queries/NoopQueryTest.scala @@ -25,4 +25,12 @@ class NoopQueryTest extends AnyFlatSpec with Matchers with DockerTests { } }.await.result } + + "it" should "not error out when executed in a sequence" in { + client.execute { + search("noop").query { + boolQuery().should(Seq(NoopQuery, NoopQuery)) + } + }.await.result + } }