亲,只收二进制

ES 在做mysql同步的问题

Elasticsearch | 作者 buyuer | 发布于2016年01月16日 | 阅读数:6335

今天在做mysql 同步的时候,插件老是部署不上去,所以就自己写了程序做写入,那么问题来了,写入的程序代码如下:
 
 public void createIndexResponse(String indexname, String type, List<String> jsondata, List<String> idList) {
// 创建索引库 需要注意的是.setRefresh(true)这里一定要设置,否则第一次建立索引查找不到数据
IndexRequestBuilder requestBuilder = client.prepareIndex(indexname, type).setRefresh(true);
for (int i = 0; i < jsondata.size(); i++) {
if (idList != null) {
requestBuilder.setId(idList.get(i));
}

requestBuilder.setSource(jsondata.get(i));
requestBuilder.execute().actionGet();
// createIndexResponse(indexname, type, jsondata);
}
// loggers.info("保存的信息为 : ", JSON.toJSON(idList));
}
但是到这里,写入速度很慢,而且万级数据就会链接超时 ,求各位大牛告知 方法 谢谢了
已邀请:

spirit888h

赞同来自:

首先你用的是什么版本的ES,同时你用的什么插件?
给你一个在2.0版本以下的基于_river的例子,希望能帮到你。
 
{
"type": "jdbc",
"schedule": "0 0-59 0-23 * * ?",
"jdbc": {
"url": "jdbc:mysql://192.168.23.207:3306/test",
"user": "root",
"password": "root",
"sql": [
{
"statement": "select ip ,mac ,national, province, city, country, address, dept, mgr, tel, email, latitude, longitude, vendor, date_format(time,'%Y-%c-%d %H:%i:%s') as update_time, UNIX_TIMESTAMP(date_format(time,'%Y-%c-%d %h:%i:%s') ) as update_time_long from v_ip where date_add(time, interval 1 minute) > ? ",
"parameter": [
"$river.state.last_active_begin"
]
}
],
"index": "Your index name",
"type": "Your type name"
}
}

 

buyuer - 90

赞同来自:

1.jpg

我在git 上下载了源码 编译后 2.1的报这个错误 。

kl - 90后IT新贵

赞同来自:

楼主这个问题很明显啊,找不到插件的配置文件,我发现最新版的es离线安装插件都有这个问题,最近才搞es,不知之前的版本怎么样,你应该安装了其他的插件吧,你把其他的插件配置拷贝一份,稍微配置一下,主要是插件的加载clss,就ok了

要回复问题请先登录注册