ElastcSearch的Mapping映射建立
根据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映射建立的更多相关文章
- HibernateTools实现pojo类 数据库schma mapping映射的相互转换
核心 利用HibernateTools,从POJO类,Mapping映射文件,数据库表有其中的一项,就能生成其他两项. 概述 在使用Hibernate开发系统持久层时,按照一般开发流程 1.分析业务 ...
- 第三百六十四节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的mapping映射管理
第三百六十四节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的mapping映射管理 1.映射(mapping)介绍 映射:创建索引的时候,可以预先定义字 ...
- HibernateTools实现pojo类 数据库schma mapping映射的相互转换 二
接着上一篇博客:HibernateTools实现pojo类 数据库schma mapping映射的相互转换 思路二:由数据库表,生成Mapping映射文件和POJO类. 尽管能够实现,但个人觉着先设计 ...
- Elasticsearch学习系列之mapping映射
什么是映射 为了能够把日期字段处理成日期,把数字字段处理成数字,把字符串字段处理成全文本(Full-text)或精确(Exact-value)的字符串值,Elasticsearch需要知道每个字段里面 ...
- mapping 映射
es的映射就相当于编程语言中给变量定义类型,定义后的变量使用起来更高效,未定义的变量相较于定义的性能肯定是不如的.所以需要掌握es映射. 未定义映射es会对提供的数据进行类型猜测,如果对自动判断的类型 ...
- Elasticsearch索引的操作,利用kibana 创建/删除一个es的索引及mapping映射
索引的创建及删除 1. 通过索引一篇文档创建了一个新的索引 .这个索引采用的是默认的配置,新的字段通过动态映射的方式被添加到类型映射. 利用Kibana提供的DevTools来执行命令,要创建一个索引 ...
- elasticsearch的mapping映射
Mapping简述 Elasticsearch是一个schema-less的系统,但并不代表no shema,而是会尽量根据JSON源数据的基础类型猜测你想要的字段类型映射.Elasticsearch ...
- elasticsearch中的mapping映射配置与查询典型案例
elasticsearch中的mapping映射配置与查询典型案例 elasticsearch中的mapping映射配置示例比如要搭建个中文新闻信息的搜索引擎,新闻有"标题".&q ...
- Mybatis自动生成实体类、dao接口和mapping映射文件
由于Mybatis是一种半自动的ORM框架,它的工作主要是配置mapping映射文件,为了减少手动书写映射文件,可以利用mybatis生成器,自动生成实体类.dao接口以及它的映射文件,然后直接拷贝到 ...
随机推荐
- HDU 4910 HDOJ Problem about GCD BestCoder #3 第四题
首先 m = 1 时 ans = 0对于 m > 1 的 情况 由于 1 到 m-1 中所有和m互质的数字,在 对m的乘法取模 运算上形成了群 ai = ( 1<=a<m & ...
- 异或值 xor
题目描述 给出一个 N 个点的带权无向图,要求从 1 号点到 N 号点的一条路径,使得路径上的边 权异或值最大. 输入格式 第一行包含两个整数N和 M, 表示该无向图中点的数目与边的数目. 接下来M ...
- 【CF Round 429 B. Godsend】
time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standa ...
- 洛谷P3120 [USACO15FEB]Cow Hopscotch
题目描述 Just like humans enjoy playing the game of Hopscotch, Farmer John's cows have invented ...
- Hibernate中多种方式解除延迟加载
问题引发:因为dao使用load(),默认延迟加载的,当在biz关闭session之后,UI层无法获取对象的非id属性值 解决方案: 1.变成get,即时加载 2.用Hibernate.isIniti ...
- CSS控制图片显示区域
优化页面响应速度,减少页面向服务端请求图片次数,有时候可能会将多个小图合并到一张图中,用的时候通过css控制显示的区域,比如:上传一张人物图片到服务器检测人脸,最后在页面上列出所有识别出来的人脸,实现 ...
- C#模拟进行压力测试
using System; using System.Diagnostics; using System.IO; using System.Net; using System.Text; using ...
- 获取父窗口iframe方法
在页面中,有个iframe,基于这个iframe,弹出了个窗口,这个窗口在关闭的时候需要操作iframe里的元素. 做法是 window.top.document.getElementById(&qu ...
- VS2015自动添加注释
记录下创建一个MVC5下的Models文件夹下的代码添加自动注释修改文件路径位置: 让VS自动生成类的头部注释,只需修改两个文集即可,一下两个路径下个有一个 Class.cs文件 C:\Program ...
- Python的扩展接口[2] -> 动态链接库DLL[0] -> 动态链接库及辅助工具
动态链接库 / Dynamic Link Library 目录 动态链接库简介 函数封装DLL 组件对象模型COM 如何判断.dll文件是COM还是DLL 辅助工具 1 动态链接库简介 / DLL I ...