zoukankan      html  css  js  c++  java
  • Elasticsearch教程(七) elasticsearch Insert 插入数据(Java)

    首先我不赞成再采用一些中间件(jar包)来解决和 Elasticsearch  之间的交互,比如 Spring-data-elasticsearch.jar 系列一样,用就得依赖它。而 Elasticsearch  本身的用法就是很简洁的,也很容易,只要稍微加一下封装,即可解决。下面上我的简单封装的批量处理。

    package com.sojson.core.elasticsearch.manager;

    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;

    import net.sf.json.JSONObject;

    import org.elasticsearch.action.bulk.BulkRequestBuilder;
    import org.elasticsearch.action.bulk.BulkResponse;
    import org.elasticsearch.action.index.IndexRequestBuilder;

    import com.sojson.common.utils.StringUtils;
    import com.sojson.core.elasticsearch.utils.ESTools;

    public class InsertManager {

        /**
         * 添加数据到Elasticsearch
         * @param index        索引
         * @param type        类型
         * @param idName    Id字段名称
         * @param json        存储的JSON,可以接受Map
         * @return
         */
        public static  Map save(String index, String type, String idName,JSONObject json) {
            List list = new ArrayList();
            list.add(json);
            return save(index, type, idName, list);
        }
        
        
        /**
         * 添加数据到Elasticsearch
         * @param index        索引
         * @param type        类型
         * @param idName    Id字段名称
         * @param listData  一个对象集合
         * @return
         */
        @SuppressWarnings("unchecked")
        public static  Map save(String index, String type, String idName,List listData) {
            BulkRequestBuilder bulkRequest = ESTools.client.prepareBulk().setRefresh(true);
            Map resultMap = new HashMap();
            
            
            for (Object object : listData) {
                JSONObject json = JSONObject.fromObject(object);
                //没有指定idName 那就让Elasticsearch自动生成
                if(StringUtils.isBlank(idName)){
                    IndexRequestBuilder lrb = ESTools.client.prepareIndex(index, type).setSource(json);
                    bulkRequest.add(lrb);
                }
                else{
                    String idValue = json.optString(idName);
                    IndexRequestBuilder lrb = ESTools.client.prepareIndex(index, type,idValue).setSource(json);
                    bulkRequest.add(lrb);    
                }
                
            }

            BulkResponse bulkResponse = bulkRequest.execute().actionGet();
            if (bulkResponse.hasFailures()) {
                // process failures by iterating through each bulk response item
                System.out.println(bulkResponse.getItems().toString());
                resultMap.put("500", "保存ES失败!");
                return resultMap;
            }
            bulkRequest = ESTools.client.prepareBulk();
            resultMap.put("200", "保存ES成功!");
            return resultMap;
        }
    }

  • 相关阅读:
    杜教筛
    GCD Counting Codeforces
    洛谷 P4317 花神的数论题 || bzoj3209
    About set HDU
    Queue Sequence HDU
    bzoj2154||洛谷P1829 Crash的数字表格&&JZPTAB && bzoj3309 DZY Loves Math
    洛谷 P1445 [Violet]樱花
    洛谷 P2158 [SDOI2008]仪仗队 && 洛谷 P1447 [NOI2010]能量采集
    nginx中使用waf防火墙
    wordpress安装
  • 原文地址:https://www.cnblogs.com/austinspark-jessylu/p/6879066.html
Copyright © 2011-2022 走看看