elasticsearch---批量修改,批量更新某个字段

原文链接:http://www.mamicode.com/info-detail-2524351.html

1.源生API

在这里没有用官方提供的bulk API,而是用的另外一种方式。

POST /infomations/infomations/_update_by_query

JSON请求格式

{
    "query": {
        "match": {
            "status": "UP_SHELF"
        }
    },
    "script": {
        "inline": "ctx._source[‘status‘] = ‘DOWN_SHELF‘"
    }
}

POST请求/索引/文档名/_update_by_query

主要看一下下面的script

ctx._source[字段名] = “值”;ctx._source[字段名] = “值”;

多个的话就用分号隔开。

2.JAVA API操作

        //集群模式,获取链接
        Client client = elasticsearchTemplate.getClient();
        
        UpdateByQueryRequestBuilder updateByQuery = UpdateByQueryAction.INSTANCE.newRequestBuilder(client);
        String name = "修改数值";
        updateByQuery.source("索引")
         //查询要修改的结果集
         .filter(QueryBuilders.termQuery("field", 412))
         //修改操作 
        .script(new Script( "ctx._source[‘field‘]=‘"+ name+"‘;ctx._source[‘field‘]=‘"+name+"‘"));
        //响应结果集
        BulkByScrollResponse response = updateByQuery.get();
        long updated = response.getUpdated();

原文链接:http://www.mamicode.com/info-detail-2524351.html

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
您可以使用RestHighLevelClient来执行批量更新某个字段的操作。以下是一个示例代码: ```java import org.elasticsearch.action.bulk.BulkRequest; import org.elasticsearch.action.bulk.BulkResponse; import org.elasticsearch.action.update.UpdateRequest;import org.elasticsearch.client.RequestOptions; import org.elasticsearch.client.RestHighLevelClient; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentFactory; import org.elasticsearch.index.Index; import java.io.IOException; public class BulkUpdateExample { public void bulkUpdateField(RestHighLevelClient client, String index, String field, String value) throws IOException { BulkRequest bulkRequest = new BulkRequest(); // 构建批量更新请求 UpdateRequest updateRequest = new UpdateRequest(index, "_doc", "document_id"); XContentBuilder contentBuilder = XContentFactory.jsonBuilder().startObject().field(field, value).endObject(); updateRequest.doc(contentBuilder); // 将更新请求添加到批量请求中 bulkRequest.add(updateRequest); // 执行批量请求 BulkResponse bulkResponse = client.bulk(bulkRequest, RequestOptions.DEFAULT); // 处理响应结果 if (bulkResponse.hasFailures()) { // 处理失败情况 System.out.println("批量更新操作执行失败:" + bulkResponse.buildFailureMessage()); } else { // 处理成功情况 System.out.println("批量更新操作执行成功!"); } } } ``` 在上面的示例中,您需要提供以下参数: - `client`:使用RestHighLevelClient进行操作的Elasticsearch客户端。 - `index`:要更新的索引名称。 - `field`:要更新字段名称。 - `value`:要更新字段值。 您可以根据实际情况修改代码中的参数和索引文档的ID。此示例将会对指定文档进行批量更新操作,将指定字段的值更新为新的值。注意,此示例使用的是Elasticsearch 7.x的Java客户端API。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值