Skip to content

Commit

Permalink
Add indices options to update by query (#3171)
Browse files Browse the repository at this point in the history
  • Loading branch information
joelvim authored Oct 5, 2024
1 parent 68c6868 commit 6164d12
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package com.sksamuel.elastic4s.requests.update

import com.sksamuel.elastic4s.Indexes
import com.sksamuel.elastic4s.ext.OptionImplicits._
import com.sksamuel.elastic4s.requests.admin.IndicesOptionsRequest
import com.sksamuel.elastic4s.requests.common.{RefreshPolicy, Slice, Slicing}
import com.sksamuel.elastic4s.requests.script.Script
import com.sksamuel.elastic4s.requests.searches.queries.Query
Expand All @@ -23,7 +24,9 @@ case class UpdateByQueryAsyncRequest(indexes: Indexes,
slice: Option[Slice] = None,
timeout: Option[FiniteDuration] = None,
shouldStoreResult: Option[Boolean] = None,
size: Option[Int] = None) extends BaseUpdateByQueryRequest {
size: Option[Int] = None,
indicesOptions: Option[IndicesOptionsRequest] = None) extends BaseUpdateByQueryRequest {

def proceedOnConflicts(proceedOnConflicts: Boolean): UpdateByQueryAsyncRequest =
copy(proceedOnConflicts = proceedOnConflicts.some)

Expand Down Expand Up @@ -62,5 +65,7 @@ case class UpdateByQueryAsyncRequest(indexes: Indexes,
def shouldStoreResult(shouldStoreResult: Boolean): UpdateByQueryAsyncRequest =
copy(shouldStoreResult = shouldStoreResult.some)

def indicesOptions(options: IndicesOptionsRequest): UpdateByQueryAsyncRequest = copy(indicesOptions = options.some)

override val waitForCompletion: Option[Boolean] = Some(false)
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import com.sksamuel.elastic4s.requests.common.{RefreshPolicy, Slice, Slicing}
import com.sksamuel.elastic4s.requests.script.Script
import com.sksamuel.elastic4s.requests.searches.queries.Query
import com.sksamuel.elastic4s.ext.OptionImplicits._
import com.sksamuel.elastic4s.requests.admin.IndicesOptionsRequest

import scala.concurrent.duration.FiniteDuration

Expand Down Expand Up @@ -44,6 +45,8 @@ trait BaseUpdateByQueryRequest {
val size: Option[Int]

val waitForCompletion: Option[Boolean]

val indicesOptions: Option[IndicesOptionsRequest]
}
case class UpdateByQueryRequest(indexes: Indexes,
query: Query,
Expand All @@ -63,7 +66,8 @@ case class UpdateByQueryRequest(indexes: Indexes,
slice: Option[Slice] = None,
timeout: Option[FiniteDuration] = None,
shouldStoreResult: Option[Boolean] = None,
size: Option[Int] = None) extends BaseUpdateByQueryRequest {
size: Option[Int] = None,
indicesOptions: Option[IndicesOptionsRequest] = None) extends BaseUpdateByQueryRequest {

def proceedOnConflicts(proceedOnConflicts: Boolean): UpdateByQueryRequest =
copy(proceedOnConflicts = proceedOnConflicts.some)
Expand Down Expand Up @@ -106,4 +110,5 @@ case class UpdateByQueryRequest(indexes: Indexes,
def shouldStoreResult(shouldStoreResult: Boolean): UpdateByQueryRequest =
copy(shouldStoreResult = shouldStoreResult.some)

def indicesOptions(options: IndicesOptionsRequest): UpdateByQueryRequest = copy(indicesOptions = options.some)
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import com.sksamuel.elastic4s.handlers.common.FetchSourceContextQueryParameterFn
import com.sksamuel.elastic4s.handlers.script.ScriptBuilderFn
import com.sksamuel.elastic4s.handlers.searches.queries
import com.sksamuel.elastic4s.json.{XContentBuilder, XContentFactory}
import com.sksamuel.elastic4s.requests.common.{RefreshPolicyHttpValue, Slicing}
import com.sksamuel.elastic4s.requests.common.{IndicesOptionsParams, RefreshPolicyHttpValue, Slicing}
import com.sksamuel.elastic4s.requests.task.GetTask
import com.sksamuel.elastic4s.requests.update.{BaseUpdateByQueryRequest, UpdateByQueryAsyncRequest, UpdateByQueryAsyncResponse, UpdateByQueryRequest, UpdateByQueryResponse, UpdateByQueryTask, UpdateRequest, UpdateResponse}
import com.sksamuel.elastic4s.{BulkIndexByScrollFailure, ElasticError, ElasticRequest, ElasticUrlEncoder, Handler, HttpEntity, HttpResponse, ResponseHandler}
Expand Down Expand Up @@ -91,6 +91,10 @@ trait UpdateHandlers {
if (s == Slicing.AutoSlices) params.put("slices", Slicing.AutoSlicesValue) else params.put("slices", s)
)

request.indicesOptions.foreach { opts =>
IndicesOptionsParams(opts).foreach { case (key, value) => params.put(key, value) }
}

val body = UpdateByQueryBodyFn(request)
logger.debug(s"Update by query ${body.string}")
val entity = HttpEntity(body.string, "application/json")
Expand Down

0 comments on commit 6164d12

Please sign in to comment.