gpt4 book ai didi

java - 使用脚本ElasticSearch API的更新不接受Scala Map

转载 作者:行者123 更新时间:2023-12-03 02:16:30 24 4
gpt4 key购买 nike

我遇到了一个用例,需要更新ElasticSearch文档中的特定字段。因此,对于此用例,我使用了Update API with a script ES doc。但是我遇到了Script构造函数的问题(编译错误),该构造函数接受以下参数:-> typelangidOrCodeparams,问题在于params(java.util.Map)参数。
我什至尝试了Scala至Java转换器,但无法解决。
代码段


import org.elasticsearch.action.update.UpdateRequest
import org.elasticsearch.client.RequestOptions
import org.elasticsearch.script.{Script, ScriptType}

object Testing extends App {

val result = updateByScript("testing", "hW7BBnQBn2nWmIjS_b0C", 10.0)
println("@@@@@@result:---> " + result)
high_level_client.close()

def updateByScript(index: String, id: String, count: Double) = {

//import scala.collection.JavaConversions.mapAsJavaMap
//import collection.JavaConverters._
import scala.collection.JavaConverters._

val updateRequest = new UpdateRequest(index, id)

val params = Map[String, Double]("count" -> count)

val script = new Script(ScriptType.INLINE, "painless", "ctx._source.count += params.count", mapAsJavaMap(params))
updateRequest.script(script)

high_level_client.update(updateRequest, RequestOptions.DEFAULT)
}
}

最佳答案

对于上述问题,我尝试了使用Script参数的idOrCode构造函数,它解决了我的用例,但仍然没有获得其他Script构造函数的解决方案。
接受idOrCode参数的带有Constructor的工作代码。
代码段


import org.elasticsearch.action.update.UpdateRequest
import org.elasticsearch.client.RequestOptions
import org.elasticsearch.script.{Script, ScriptType}

object Testing extends App {

val result = updateByScript("testing", "hW7BBnQBn2nWmIjS_b0C", 10.0)
println("@@@@@@result:---> " + result)
high_level_client.close()

def updateByScript(index: String, id: String, count: Double) = {
val updateRequest = new UpdateRequest(index, id)
val script = new Script(s"""ctx._source.count += $count""")
updateRequest.script(script)
high_level_client.update(updateRequest, RequestOptions.DEFAULT)
}
}

关于java - 使用脚本ElasticSearch API的更新不接受Scala Map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63489938/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com