Elasticsearch2.3.4+elasticsearch-jdbc-2.3.4.1+oracle 同步oracle
系统环境centos6.5
版本需求
Elasticsearch2.3.4
elasticsearch-jdbc-2.3.4.1
jdk1.8
oracle驱动 oracle11g-JDBC-ojdbc6.jar,oracle11g-JDBC-orai18n.jar
一.Elasticsearch2.3.4 环境搭建
1.配置JDK1.8
2.解压
tar -xzvf elasticsearch-2.3.4.tar.gz
3.进入config目录下
cd elasticsearch-2.3.4/config/
编辑elasticsearch.yml (logging.yml是日志配置)
vim elasticsearch.yml
修改
cluster.name: joo //集群名字
node.rack: master //节点名
network.host: host //节点ip
http.port: 9200 //端口号
discovery.zen.ping.unicast.hosts: ["host1", "host2", "host3"] //自动发现节点选举master
discovery.zen.minimum_master_nodes: 2 //避免脑裂现象,一般设置成 N/2 + 1,N是集群中节点的数量
4.es后台启动
每个节点的Elasticsearch2.3.4/bin目录下 ./elasticsearch -d
查看集群状态
http://host:9200/_cat/health
green 代表健康
二.elasticsearch-jdbc-2.3.4.1 环境搭建
1.export JDBC_IMPORTER_HOME=/home/joo/elasticsearch-2.3.4 .bashrc目录下添加
2.mysql自带驱动,oracle把驱动放到 elasticsearch-jdbc-2.3.4.1/lib目录下
3.创建脚本同步oracle 在elasticsearch-jdbc-2.3.4.1/bin 目录下 (基础配置)
#!/bin/sh
bin=/home/joo/elasticsearch-jdbc-2.3.4.1/bin
lib=/home/joo/elasticsearch-jdbc-2.3.4.1/lib
echo '{
"type" : "jdbc",
"jdbc" : {
"elasticsearch.autodiscover" : true, //开启自动嗅探
"elasticsearch.cluster" : "joo", //es集群名字
"url" : "jdbc:oracle:thin:@host:1521:orcl",
"user" : "sjy",
"useSSL":"true",
"password" : "sjy",
"sql" : "select * from addr where rownum < 10",
"elasticsearch" : {
"host" : "host",
"port" : 9300
},
"index" : "sjy", //es的索引名 类似于oracle的数据库名
"type" : "addr" //es的索引类型 类似于oracle的表名
}
}
' | java \
-cp "${lib}/*" \
-Dlog4j.configurationFile=${bin}/log4j2.xml \
org.xbib.tools.Runner \
org.xbib.tools.JDBCImporter
启动脚本 同步数据(可以设置每分钟同步一次 增量)具体看api
curl -XGET 'http://host:9200/sjy/addr/_search?pretty' 或http://host:9200/sjy/addr/_search?pretty
检查数据是否同步成功
Elasticsearch2.3.4 调优
1.在bin/elasticsearch.in.sh中进行配置,修改配置项为尽量大的内存:
ES_MIN_MEM=5g
ES_MAX_MEM=5g
两者最好改成一样的,否则容易引发长时间GC。
2.包括加大JVM的可用内存及单线程内存。
可修改./bin/elasticsearch.in.sh文件:
# 线程大小, ES单线程承载的数据量比较大
JAVA_OPTS="$JAVA_OPTS -Xss128m"
3.修改./config/elasticsearch.yml文件
# 分片数量,推荐分片数*副本数=集群数量
# 分片会带来额外的分割和合并的损耗,理论上分片数越少,搜索的效率越高
index.number_of_shards: 3
# 锁定内存,不让JVM写入swapping,避免降低ES的性能
bootstrap.mlockall: true
# 缓存类型设置为Soft Reference,只有当内存不够时才会进行回收
index.cache.field.max_size: 50000
index.cache.field.expire: 10m
index.cache.field.type: soft
系统环境centos6.5
版本需求
Elasticsearch2.3.4
elasticsearch-jdbc-2.3.4.1
jdk1.8
oracle驱动 oracle11g-JDBC-ojdbc6.jar,oracle11g-JDBC-orai18n.jar
一.Elasticsearch2.3.4 环境搭建
1.配置JDK1.8
2.解压
tar -xzvf elasticsearch-2.3.4.tar.gz
3.进入config目录下
cd elasticsearch-2.3.4/config/
编辑elasticsearch.yml (logging.yml是日志配置)
vim elasticsearch.yml
修改
cluster.name: joo //集群名字
node.rack: master //节点名
network.host: host //节点ip
http.port: 9200 //端口号
discovery.zen.ping.unicast.hosts: ["host1", "host2", "host3"] //自动发现节点选举master
discovery.zen.minimum_master_nodes: 2 //避免脑裂现象,一般设置成 N/2 + 1,N是集群中节点的数量
4.es后台启动
每个节点的Elasticsearch2.3.4/bin目录下 ./elasticsearch -d
查看集群状态
http://host:9200/_cat/health
green 代表健康
二.elasticsearch-jdbc-2.3.4.1 环境搭建
1.export JDBC_IMPORTER_HOME=/home/joo/elasticsearch-2.3.4 .bashrc目录下添加
2.mysql自带驱动,oracle把驱动放到 elasticsearch-jdbc-2.3.4.1/lib目录下
3.创建脚本同步oracle 在elasticsearch-jdbc-2.3.4.1/bin 目录下 (基础配置)
#!/bin/sh
bin=/home/joo/elasticsearch-jdbc-2.3.4.1/bin
lib=/home/joo/elasticsearch-jdbc-2.3.4.1/lib
echo '{
"type" : "jdbc",
"jdbc" : {
"elasticsearch.autodiscover" : true, //开启自动嗅探
"elasticsearch.cluster" : "joo", //es集群名字
"url" : "jdbc:oracle:thin:@host:1521:orcl",
"user" : "sjy",
"useSSL":"true",
"password" : "sjy",
"sql" : "select * from addr where rownum < 10",
"elasticsearch" : {
"host" : "host",
"port" : 9300
},
"index" : "sjy", //es的索引名 类似于oracle的数据库名
"type" : "addr" //es的索引类型 类似于oracle的表名
}
}
' | java \
-cp "${lib}/*" \
-Dlog4j.configurationFile=${bin}/log4j2.xml \
org.xbib.tools.Runner \
org.xbib.tools.JDBCImporter
启动脚本 同步数据(可以设置每分钟同步一次 增量)具体看api
curl -XGET 'http://host:9200/sjy/addr/_search?pretty' 或http://host:9200/sjy/addr/_search?pretty
检查数据是否同步成功
Elasticsearch2.3.4 调优
1.在bin/elasticsearch.in.sh中进行配置,修改配置项为尽量大的内存:
ES_MIN_MEM=5g
ES_MAX_MEM=5g
两者最好改成一样的,否则容易引发长时间GC。
2.包括加大JVM的可用内存及单线程内存。
可修改./bin/elasticsearch.in.sh文件:
# 线程大小, ES单线程承载的数据量比较大
JAVA_OPTS="$JAVA_OPTS -Xss128m"
3.修改./config/elasticsearch.yml文件
# 分片数量,推荐分片数*副本数=集群数量
# 分片会带来额外的分割和合并的损耗,理论上分片数越少,搜索的效率越高
index.number_of_shards: 3
# 锁定内存,不让JVM写入swapping,避免降低ES的性能
bootstrap.mlockall: true
# 缓存类型设置为Soft Reference,只有当内存不够时才会进行回收
index.cache.field.max_size: 50000
index.cache.field.expire: 10m
index.cache.field.type: soft