使用Apache Beam连接器的ElasticSearch中的Upsert操作

时间:2019-03-27 20:38:42

标签: elasticsearch apache-beam-io

我正在尝试使用Apache Beam连接器将数据加载到Elastic搜索中。我能够成功为文档建立索引。

我知道Elastic update API允许您在特定indexId上运行脚本和upsert操作。我试图使用Apache Beam弹性搜索连接器执行相同操作,并出现如下错误,

org.apache.beam.sdk.Pipeline $ PipelineExecutionException:java.io.IOException:写入Elasticsearch时出错,无法插入某些元素:

下面是我已经传递给elasticSearch连接器的文档。 {“ keyId”:“ someName”,“ Indexname”:“ fname”,“ Type”:“ emp”,“ script”:{“ source”:“ ctx._source.keyVal.add(params.keyVal)”,“ lang“:” painless“,” params“:{” keyVal“:” blue4“}},” upsert“:{” keyId“:” jitendra2“,” Indexname“:” fname“,” Type“:” emp“ ,“ keyVal”:[“ blue”]}}

我是否需要添加任何内容以使连接器知道这是一个更新操作?

我能够成功地从邮递员发布此json。

.apply(                 “写入Elasticsearch索引”,                 ElasticsearchIO.write()                     .withConnectionConfiguration(连接)                     .withIndexFn(new ExtractKeyFn(“ Indexname”))                     .withIdFn(new ExtractKeyFn(“ keyId”))                     .withTypeFn(new ExtractKeyFn(“ Type”))                     .withMaxBatchSize(100)                     .withUsePartialUpdate(true));

0 个答案:

没有答案