elasticsearch——upsert(类似于oracle中merge的方法)

实现有则更新,无则插入

参数中增加doc_as_upsert属性

例:

{
	'_index': INDEX_NAME,
	'_type': doc_type,
	'_id': doc['id'],
	'_op_type': 'update',
	'doc': doc['doc'],
	'doc_as_upsert': True
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Elasticsearch使用Java进行upsert操作,可以使用Elasticsearch的Java高级客户端(High-Level REST Client)来实现。下面是一个简单的示例代码: ```java import org.apache.http.HttpHost; import org.elasticsearch.action.DocWriteRequest; import org.elasticsearch.action.bulk.BulkRequest; import org.elasticsearch.action.index.IndexRequest; import org.elasticsearch.client.RequestOptions; import org.elasticsearch.client.RestClient; import org.elasticsearch.client.RestHighLevelClient; import java.io.IOException; public class UpsertExample { public static void main(String[] args) { // 创建RestHighLevelClient实例 RestHighLevelClient client = new RestHighLevelClient( RestClient.builder(new HttpHost("localhost", 9200, "http")) ); // 创建IndexRequest和BulkRequest IndexRequest indexRequest = new IndexRequest("your_index", "your_type", "your_id") .source("your_field", "your_value"); // 设置需要插入或更新的字段和值 BulkRequest bulkRequest = new BulkRequest() .add(indexRequest); // 将IndexRequest添加到BulkRequest try { // 执行upsert操作 client.bulk(bulkRequest, RequestOptions.DEFAULT); // 关闭client连接 client.close(); } catch (IOException e) { e.printStackTrace(); } } } ``` 在上述示例,首先创建了一个`RestHighLevelClient`实例,指定Elasticsearch的主机和端口。然后,创建一个`IndexRequest`对象,指定索引、类型和文档ID,并使用`source`方法设置需要插入或更新的字段和值。接下来,创建一个`BulkRequest`对象,并将`IndexRequest`添加到其。最后,使用`bulk`方法执行upsert操作,并关闭客户端连接。 请根据您的具体需求修改代码的索引、类型、文档ID、字段和值等参数。另外,您可能还需要处理异常情况和其他错误处理逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值