根据oracle的字段来建立ElasticSearch的Mapping

public class Start {

    private static Logger log = LoggerFactory.getLogger(Start.class);
private static TransportClient client = null; static{
try {
client = getClient();
} catch (UnknownHostException e) {
e.printStackTrace();
}
} public static void main(String[] args) throws MalformedURLException, ClassNotFoundException {
DoMapping();
} private static void DoMapping() {
String template = "{\n"
+"\t\""+Constant.INDEX+"\":{\n"
+"\t\t\"properties\":{\n"
+ "\t\t{#}\n"
+ "\t\t\t\t}\n"
+ "\t\t}\n"
+"}";
String fieldString = GetOracleMapping();
template = template.replace("{#}",fieldString);
client.admin().indices().prepareCreate(Constant.INDEX).addMapping(Constant.INDEX, template).get();
System.out.println(template);
log.info("创建ElasticSearch Mapping完成!!!");
} private static TransportClient getClient() throws UnknownHostException {
Settings settings = Settings.settingsBuilder().put("cluster.name", Constant.CLUSTER).build();
TransportClient client = TransportClient.builder().settings(settings).build();
client.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(Constant.ESHOST), Constant.ESPORT));
return client;
} public static String GetOracleMapping() {
StringBuilder fieldstring = new StringBuilder();
Connection con = null;
PreparedStatement pre = null;
ResultSet result = null;
try {
Class.forName(Constant.DBDRIVER);
log.info("开始尝试连接数据库!");
con = DriverManager.getConnection(Constant.DBURL, Constant.DBUSER, Constant.DBPASSWD);
log.info("连接成功!");
String sql = "select * from "+Constant.DBTAB+" where rownum=?";
pre = con.prepareStatement(sql);
pre.setInt(1, 1);
result = pre.executeQuery();
ResultSetMetaData d = result.getMetaData();
int c = d.getColumnCount(); for (int i = 1; i <= c; i++) {
fieldstring.append("\t\t\t\t\"" + d.getColumnName(i).toLowerCase() + "\": {\n");
fieldstring.append("\t\t\t\t\t\t\"type\": \""
+ GetElasticSearchMappingType(d.getColumnTypeName(i)) + "\n");
if (i == c) {
fieldstring.append("\t\t\t\t\t}\n");
} else {
fieldstring.append("\t\t\t\t\t},\n");
}
} } catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (result != null)
result.close();
if (pre != null)
pre.close();
if (con != null)
con.close();
log.info("数据库连接已关闭!");
} catch (Exception e) {
e.printStackTrace();
}
}
return fieldstring.toString();
} private static String GetElasticSearchMappingType(String dbtype) {
String es = "string";
switch (dbtype) {
case "DATE":
es = "date\"\n"+"\t\t\t\t\t\t,\"format\":\"yyyy-MM-dd\"\n"+"\t\t\t\t\t\t,\"null_value\":\"1900-01-01\"";
break;
case "NUMBER":
es = "double\"\n"+"\t\t\t\t\t\t,\"null_value\":0.00";
break;
default:
es = "string\"\n"+"\t\t\t\t\t\t,\"null_value\":\"\"";
break;
}
return es;
} }

其中读取配置文件的内容

db.driver=oracle.jdbc.driver.OracleDriver
db.url=jdbc:oracle:thin:@192.168.49.140:1521:DBDATA
db.user=ms_orders
db.passwd=ms1_orders
db.table=t_order es.host=192.168.46.154
es.port=9300
cluster.name=dinpayEs
es.index=t_orders

ElastcSearch的Mapping映射建立的更多相关文章

  1. HibernateTools实现pojo类 数据库schma mapping映射的相互转换

    核心 利用HibernateTools,从POJO类,Mapping映射文件,数据库表有其中的一项,就能生成其他两项. 概述 在使用Hibernate开发系统持久层时,按照一般开发流程 1.分析业务 ...

  2. 第三百六十四节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的mapping映射管理

    第三百六十四节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的mapping映射管理 1.映射(mapping)介绍 映射:创建索引的时候,可以预先定义字 ...

  3. HibernateTools实现pojo类 数据库schma mapping映射的相互转换 二

    接着上一篇博客:HibernateTools实现pojo类 数据库schma mapping映射的相互转换 思路二:由数据库表,生成Mapping映射文件和POJO类. 尽管能够实现,但个人觉着先设计 ...

  4. Elasticsearch学习系列之mapping映射

    什么是映射 为了能够把日期字段处理成日期,把数字字段处理成数字,把字符串字段处理成全文本(Full-text)或精确(Exact-value)的字符串值,Elasticsearch需要知道每个字段里面 ...

  5. mapping 映射

    es的映射就相当于编程语言中给变量定义类型,定义后的变量使用起来更高效,未定义的变量相较于定义的性能肯定是不如的.所以需要掌握es映射. 未定义映射es会对提供的数据进行类型猜测,如果对自动判断的类型 ...

  6. Elasticsearch索引的操作,利用kibana 创建/删除一个es的索引及mapping映射

    索引的创建及删除 1. 通过索引一篇文档创建了一个新的索引 .这个索引采用的是默认的配置,新的字段通过动态映射的方式被添加到类型映射. 利用Kibana提供的DevTools来执行命令,要创建一个索引 ...

  7. elasticsearch的mapping映射

    Mapping简述 Elasticsearch是一个schema-less的系统,但并不代表no shema,而是会尽量根据JSON源数据的基础类型猜测你想要的字段类型映射.Elasticsearch ...

  8. elasticsearch中的mapping映射配置与查询典型案例

    elasticsearch中的mapping映射配置与查询典型案例 elasticsearch中的mapping映射配置示例比如要搭建个中文新闻信息的搜索引擎,新闻有"标题".&q ...

  9. Mybatis自动生成实体类、dao接口和mapping映射文件

    由于Mybatis是一种半自动的ORM框架,它的工作主要是配置mapping映射文件,为了减少手动书写映射文件,可以利用mybatis生成器,自动生成实体类.dao接口以及它的映射文件,然后直接拷贝到 ...

随机推荐

  1. 全网把Map中的hash()分析的最透彻的文章,别无二家。

    你知道HashMap中hash方法的具体实现吗?你知道HashTable.ConcurrentHashMap中hash方法的实现以及原因吗?你知道为什么要这么实现吗?你知道为什么JDK 7和JDK 8 ...

  2. 3.2 Lucene实战:一个简单的小程序

    在讲解Lucene索引和检索的原理之前,我们先来实战Lucene:一个简单的小程序! 一.索引小程序 首先,new一个java project,名字叫做LuceneIndex. 然后,在project ...

  3. bzoj 1111 - 四进制的天平

    Description 给定 1000的十进制数, 求 最小的 四幂拆分 方案 有多少种 Solution 先大除法 \(n\log_4(n)\)次取余转化为 四进制数. 然后从 低位 往 高位 \( ...

  4. 64位操作系统安装32位客户端和PL/SQL

    PL/SQ只能使用32位的Oracle客户端.在64位系统下安装了64位的oracle 11g,使用PL/SQL需再安装32位Oracle客户端. 按以下方法试验成功: 1)安装32位的Oracle客 ...

  5. 刨根问底Objective-C Runtime(4)- 成员变量与属性

    http://chun.tips/blog/2014/11/08/bao-gen-wen-di-objective[nil]c-runtime(4)[nil]-cheng-yuan-bian-lian ...

  6. 6.DataFrame(列运算)

    from odps import ODPS from odps.df import DataFrame o = ODPS(access_id="LTAIBb3aOF3ghjek", ...

  7. Activator常用方法

    1.获取图片 public static Image getImage(String key) {        Image img = getDefault().getImageRegistry() ...

  8. Python的网络编程[1] -> FTP 协议[1] -> 使用 pyftplib 建立 FTP 服务器

    使用 pyftplib 建立 FTP 服务器 pyftplib 主要用于建立 FTP Server,与 ftplib 建立的 Client 进行通信. 快速导航 1. 模块信息 2. 建立 FTP 服 ...

  9. 洛谷——P1614 爱与愁的心痛

    题目背景 (本道题目隐藏了两首歌名,找找看哪~~~) <爱与愁的故事第一弹·heartache>第一章 <我为歌狂>当中伍思凯神曲<舞月光>居然没赢给萨顶顶,爱与愁 ...

  10. Cookie和Session在Node.JS中的实践(三)

    Cookie和Session在Node.JS中的实践(三) 前面作者写的COOKIE篇.SESSION篇,算是已经比较详细的说明了两者间的区别.机制.联系了.阅读时间可能稍长,因为作者本身作图也做了不 ...