• 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;
        }
    }

  • 相关阅读:
    (原创)常用加密解密
    Winforms和资源(Resources/resx)
    delphi中的第三方控件如何安装 (转)
    IT博客
    访问FTP (转)
    设置radasm,使其支持8086 16位asm(转)
    EditPlus注册码(转)
    windows资源管理器已停止工作 (转)
    当发生异常时,怎样能不让‘delphi的异常提示框出现’而出现自己的‘异常提示框’?
    清除复制网页带过来的背景颜色 (转)
  • 原文地址:https://www.cnblogs.com/austinspark-jessylu/p/6879066.html
Copyright © 2020-2023  润新知