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接口以及它的映射文件,然后直接拷贝到 ...
随机推荐
- Vue,watch观察对象中的某个属性的变化
你只需要属性这样写,用引号引起来
- 静态页面之间的转发与json与ajax做到动态数据
我们见过很多使用jsp ,php,asp的动态网页技术的网站了,我们知道如果一个网站内容更新频率极低,而内容量不是十分庞大时,这样的网站(一次开发完成后不会需要较多的维护成本)的完全可以使用全部使用静 ...
- OpenCV 2.4.9 学习笔记(4)—— 像素类型与Templates的限制使用
限制使用templates C++中的Templates使得接口机制非常好用,高效而且能够保证数据与算法的安全.但是过多地使用templates可能会增加计算时间和代码长度,有时候还能难区分接口和实现 ...
- post传参部分数据丢失
tomcat获取post传的参数,只接收到前半部分参数,后半部分参数没有接收到 可能的原因是: tomcat中maxParameterCount是用来限制请求中的最大参数量,默认是10000,如果超过 ...
- Photoshop cs6 快捷键命令大全
工具箱(多种工具共用一个快捷键的可同时按[Shift]加此快捷键选取) 矩形.椭圆选框工具.单行单列选取工具 [M] 裁剪工具.透视.切片.透视裁剪工具 [C] 移动工具 [V] 套索.多边形套索.磁 ...
- Sqlite 约束条件 Constraints
一.约束 Constraints 我们在数据库中存储数据的时候,有一些数据有明显的约束条件. 比如一所学校关于教师的数据表,其中的字段列可能有如下约束: 年龄 - 至少大于20岁.如果你想录入一个小于 ...
- wchar_t类型的几个函数
wchar_t是C/C++的字符数据类型,是一种扩展的字符存储方式. 在Windows下,wchar_t占2个字节(byte):在Linux下,wchar_t占4个字节 wchar_t类型主要用在国际 ...
- 你不一定知道的、并没有什么卵用的一些python库
1. delorean,用来处理时间的库 import datetime import pytz # 一般情况下,我们想表示时间的话 est = pytz.timezone("Asia/Sh ...
- 【linux高级程序设计】(第十四章)TCP高级应用 3
控制socket文件描述符属性 1.set/getsockopt()修改socket属性 int getsockopt (int __fd, int __level, int __optname, v ...
- python接口自动化10-token登录【转载】
本篇转自博客:上海-悠悠 原文地址:http://www.cnblogs.com/yoyoketang/tag/python%E6%8E%A5%E5%8F%A3%E8%87%AA%E5%8A%A8%E ...