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接口以及它的映射文件,然后直接拷贝到 ...
随机推荐
- [poj] 2318 TOYS || 判断点在多边形内
原题 给出一个矩形玩具箱和其中隔板的位置,求每个玩具在第几个隔间内(保证没有在线上的玩具) 将玩具按x轴排序,记录当前隔板的编号,每次判断是否需要右移(左移)隔板(因为是有序的,所以移动次数左右不厚超 ...
- 理解javascript的闭包,原型,和匿名函数及IIFE
理解javascript的闭包,原型,和匿名函数(自己总结) 一 .>关于闭包 理解闭包 需要的知识1.变量的作用域 例1: var n =99; //建立函数外的全局变量 function r ...
- ListView控件的不为人知的秘密
使用ListView控件展示数据 1.图像列表控件(ImageList控件) 图像列表控件(ImageList控件)是含有图像对象的集合,可以通过索引或关键字引用该集合的每个对象,ImageList控 ...
- C++ DLL导出类 知识大全
在公司使用C++ 做开发,公司的大拿搭了一个C++的跨平台开发框架.在C++开发领域我还是个新手,有很多知识要学,比如Dll库的开发. 参考了很多这方面的资料,对DLL有一个基本全面的了解.有一个问题 ...
- Less的用法
Less常用来写样式,比较多的用法是使用第三方软件编译成CSS文件,然后在HTML页面引入CSS文件.而不是直接在HTML页面里引入编译文件和Less文件.如此以来,在后期修改方便的多.当然,在写小项 ...
- python的ORM框架SQLAlchemy
本节内容 ORM介绍 sqlalchemy安装 sqlalchemy基本使用 多外键关联 多对多关系 表结构设计作业 一.ORM介绍 如果写程序用pymysql和程序交互,那是不是要写原生sql语句 ...
- input 限制输入字段总结
把输入框中 输入的字符串含有中文逗号 改成 英文逗号 举例: <input type="text" id="keywords" style="w ...
- springBoot Ribbon 负载均衡
1.依赖引用 <!-- 引入关于 eureka-server的依赖 --> <dependency> <groupId>org.springframework.cl ...
- JDK7集合框架源码阅读(四) LinkedHashMap
基于版本jdk1.7.0_80 java.util.LinkedHashMap 代码如下 /* * Copyright (c) 2000, 2010, Oracle and/or its affili ...
- HDU 1171.Big Event in HDU-动态规划0-1背包
Big Event in HDU Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...