美文网首页elasticsearch
elasticsearch-spark更新文档

elasticsearch-spark更新文档

作者: 愚公300代 | 来源:发表于2016-09-05 16:16 被阅读898次

先看源码:

import org.apache.spark.{SparkConf, SparkContext}
import org.elasticsearch.spark._

/**
  * Created by magneto on 16-6-29.
  */
object Upsert4 extends App{
  val index = "test"
  val target = s"$index/docs"

  val props = Map("es.write.operation" -> "upsert",
    //"es.input.json" -> "true",
    "es.mapping.id" -> "id",
    "es.update.script.lang" -> "groovy"
  )

  val conf = new SparkConf().setAppName("read for elasticsearch").setMaster("local")
  conf.set("es.nodes", "172.24.63.14")//修改成自己使用的es服务器地址

  val sc = new SparkContext(conf)
  val name= Map("id" -> 3, "name" -> Set("sxl1989","sxl9199"))
  val lines = sc.makeRDD(Seq(name))
  val up_params = "new_name:name"
  //val up_script =  "if (ctx._source.containsKey(\"name\")) {ctx._source.name += new_name;} else {ctx._source.name = [new_name];}"
  val up_script =  "if (ctx._source.containsKey('name')) {ctx._source.name += new_name;} else {ctx._source.name = [new_name];}"
  lines.saveToEs(target, props + ("es.update.script.params" -> up_params) + ("es.update.script" -> up_script))
}

其中:es.input.json控制你输入的是否是json格式的,这里的lines用的是Map所以注释掉。
另外一处注释是注释掉的脚本,此脚本在es客户端是可以运行的,但是使用es-spark不能运行,必须将双引号改成单引号才行。
name这个其实代表一个文档,id这列因为“es.mapping.id”->"id"被选做meta数据。
注意,此处的index可以使用别名。

es.write.operation -> upsert
es.update.script.lang -> groovy
es.update.script.params -> up_params
es.update.script -> up_script
是核心配置。

更多请参考:
es官方文档
elasticsearch-hadoop源码

相关文章

  • elasticsearch-spark更新文档

    先看源码: 其中:es.input.json控制你输入的是否是json格式的,这里的lines用的是Map所以注释...

  • spark->es快速导入数据

    elasticsearch-spark 提供了saveToEs api以支持快速导入数据。但es集群线程池有限,在...

  • ES相关笔记

    常用操作 创建文档 检索文档 更多参考ES权威指南更多查询示例 删除文档 更新文档 更多脚本更新操作 并发更新控制...

  • mongodb修改器使用

    对于文档的更新除替换外,针对某个或多个文档只需要部分更新可使用原子的更新修改器,能够高效的进行文档更新。更新修改器...

  • Core Data: 非标准数据类型总结

    陈旧的 Core Data 文档终于在 iOS 9 正式发布的当天更新了,文档更新历史上写着此次更新重写了文档,是...

  • Elasticsearch文档更新及版本控制

    文档更新 在 Elasticsearch 中文档是 不可改变 的,不能修改它们。相反,如果想要更新现有的文档,需要...

  • 2020-03-27 记录mongdb(7)

    更新文档 db.collection.update() db. .update( , , ) 文档定义了更新操作...

  • elasticsearch-spark用法

    Hadoop允许Elasticsearch在Spark中以两种方式使用:通过自2.1以来的原生RDD支持,或者通过...

  • 分分钟进阶MongoDB

    数据库 集合 文档 插入数据 删除文档 查询文档 更新文档

  • 04-MongoDB-更新文档

    更新文档 1.更新文档 MongoDB中有三个常用的更新方法: save()/update()/findAndmo...

网友评论

    本文标题:elasticsearch-spark更新文档

    本文链接:https://www.haomeiwen.com/subject/hjvrettx.html