我遇到了一个需要更新elasticsearch文档中特定字段的用例。对于这个用例,我使用了 Update API with a script
es文件。但是我遇到了一个问题(编译错误) Script
接受以下p的构造函数arameters:--> type
, lang
, idOrCode
以及 params
问题在于 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)
}
}
1条答案
按热度按时间7d7tgy0s1#
对于上述问题,我尝试了
Script
具有idOrCode
参数,它解决了我的用例,但我仍然没有得到其他的解决方案Script
施工人员。与接受
idOrCode
参数。代码段