我正在尝试使用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));