zoukankan      html  css  js  c++  java
  • Java 操作 ElasticSearch API 中的 update

    方式一:修改文档中的某些特定的字段值

    try {
        Object[] objects = new Object[]{};
        // 查询的结果字段,类似于(select id, XSE from ..)
        String[] fields = {"id", "XSE"};
        FetchSourceContext sourceContext = new FetchSourceContext(true, fields, null);
        SearchSourceBuilder sb = new SearchSourceBuilder();
        sb.size(10000);
        sb.query(QueryBuilders.boolQuery().filter(QueryBuilders.termQuery("checkStatus", 1))
                .filter(QueryBuilders.termsQuery("DM", storeCodes))
        );
        sb.fetchSource(sourceContext);
        sb.sort("id", SortOrder.ASC);
        SearchRequest searchRequest = new SearchRequest(new String[]{originalNormRe.getAliase(yf)}, sb);
        SearchResponse searchResponse = originalNormRe.getEsClient().search(searchRequest, RequestOptions.DEFAULT);
        SearchHit[] searchHits = searchResponse.getHits().getHits();
        long totalHits = searchResponse.getHits().totalHits;
        logger.info("Total Hits --->" + totalHits);
        int count = 0;
        while (searchHits != null && searchHits.length > 0) {
            // 批量修改original_norm_(规范明细数据)
            BulkRequest request = new BulkRequest();
            for (SearchHit hit : searchHits) {
                objects = hit.getSortValues();
                Map<String, Object> map = hit.getSourceAsMap();
                String id = (String) map.get("id");
                Double xse = Common.getDouble(map.get("XSE"));
                XContentBuilder xcb = XContentFactory.jsonBuilder().startObject()
                        .field("countryUpXse", Common.mul(xse, upCoefficient, 2))
                        .field("countryUpXseUpdate", Common.mul(xse, upCoefficient, 2))
                        .endObject();
    
                request.add(new UpdateRequest(hit.getIndex(), "data", id)
                        .doc(xcb));
    
            }
            request.setRefreshPolicy(RefreshPolicy.IMMEDIATE);
            request.timeout(TimeValue.timeValueMinutes(2));
            request.timeout("10m");
            BulkResponse bulkResponse = originalNormRe.getEsClient().bulk(request, RequestOptions.DEFAULT);
            if (bulkResponse.hasFailures()) {
                logger.error(bulkResponse.buildFailureMessage());
            } else {
                logger.info("=========================================OK=========================================");
            }
            logger.info(String.valueOf(count += searchHits.length));
            sb.searchAfter(objects);
            searchResponse = originalNormRe.getEsClient().search(searchRequest, RequestOptions.DEFAULT);
            searchHits = searchResponse.getHits().getHits();
        }
    } catch (Exception e) {
        logger.error(e.getMessage(), e);
    }
    updateSpecificFields
  • 相关阅读:
    elasticsearch设置共享目录、创建备份、恢复备份
    elasticsearch通过logstash去重数据
    Densite_RANK 函数
    Echarts立体地图加3D柱图可点击可高亮选中的开发
    Hadoop3.x-Yarn
    Hadoop3.x-MapReduce
    python dvwa时间盲注自动化脚本(level=low)
    python dvwa布尔盲注自动化脚本(level=low)
    时序数据库 Apache-IoTDB 源码解析之元数据索引块(六)
    网易2020校招笔试- 系统开发/研发工程师(提前批) [编程题]序列维护
  • 原文地址:https://www.cnblogs.com/chaoyou/p/14612314.html
Copyright © 2011-2022 走看看