Elasticsearch教程(七) elasticsearch Insert 插入数据(Java)

信息发布:soゝso 发布日期:2016-08-22 18:50 热度:29475 分享到:

Elasticsearch  目录

首先我不赞成再采用一些中间件(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; } }


代码只能做测试使用,不能作为项目直接使用,请自己考虑风险,哈哈。


本文主题

如果本文对你有帮助,那么请你赞助我,让我更有激情的写下去,帮助更多的人。

¥我需要走的更远,点击我 赞助。 如果还有疑问,点击我加群,为你提供最好的解答。


工具导航地图

 
Nodejs + socket Demo 赞助二维码 赞助名单 百度口碑点赞 查看QQ群美女帅哥 点击加QQ群 听音乐 开启弹幕 X
反馈意见