使用Spark更新elasticsearch文档

使用Spark更新elasticsearch文档,
Warning: implode(): Invalid arguments passed in /data/phpspider/zhask/webroot/tpl/detail.html on line 45
,,我使用下面的命令在使用spark流的弹性搜索中持久化数据 val ES_CONFIGURATION=Map(ConfigurationOptions.ES_节点->“192.168.1.1”,ConfigurationOptions.ES_端口->“9200”) val ES_CONFIG=ES_CONFIGURATION+(ConfigurationOptions.ES_MAPPING_ID->“key”)+(ConfigurationOptions.ES_HTTP_TIMEOUT->“3s”

我使用下面的命令在使用spark流的弹性搜索中持久化数据

val ES_CONFIGURATION=Map(ConfigurationOptions.ES_节点->“192.168.1.1”,ConfigurationOptions.ES_端口->“9200”)

val ES_CONFIG=ES_CONFIGURATION+(ConfigurationOptions.ES_MAPPING_ID->“key”)+(ConfigurationOptions.ES_HTTP_TIMEOUT->“3s”)

这样,我就覆盖了整个文档,这是我不想要的

我只想更新此数据框中存在数据的字段


请建议,如何实现这一点…

使用
es.mapping.id

要指定要更新的文档,请执行以下操作:


EsSparkSQL.saveToEs(df,indexname,Map(“es.mapping.id”->“mappingColumn”))

您需要将以下配置“es.write.operation”设置为“upsert”。 默认情况下,模式为“索引”,为其添加新数据,同时替换(重新索引)现有数据(基于其id)。
如果指定“es.mapping.id”,它仍将继续覆盖文档

请参阅官方文件


希望这个答案对您有所帮助。

我正在做的。。。问题不在那里。。。对于特定映射ID,我不想更新此文档中的所有字段。。只想更新作为数据帧一部分的字段。。。其余字段应保持原来的状态…您好,默认情况下,行为应为upsert;不它正在覆盖整个文档。。。您能建议我是否可以使用任何其他功能或需要更改任何参数吗?
  EsSparkSQL.saveToEs(DataFrame, indexname, ES_CONFIG)