从关系数据库到Elasticsearch的索引数据– 1
Elasticsearch提供强大的搜索功能,并支持数据的分片和复制。 因此,我们希望将数据库中可用的数据索引到Elasticsearch中。
有多种方法可以将数据索引到Elasticsearch中:
- 使用Logstash将源设置为DB,将接收器设置为Elasticsearch,并在需要时使用过滤器来构建JSON对象。
- 使用外部库elasticsearch-jdbc ,该库在自己的进程中在Elasticsearch实例外部运行。 它利用传输客户端及其批量API将数据索引到Elasticsearch中。
在本文中,我们将研究方法2,即使用作为独立进程运行的外部库。
我们将使用MySQL作为数据库,并使用MySQL随附的示例数据库世界,其中包含以下表格:
- 国家
- 市
- 国家语言
Elasticsearch-jdbc库通过其GitHub 页面上提供的兼容性矩阵最多支持Elasticsearch 2.3.4。 首先,让我们为数据建立索引,而无需预先定义Elasticsearch(ES)中的索引结构。 如果我们不提供索引结构,则ES会根据索引数据推断并构建一个。 但这永远不是理想的结构。
创建一个空索引
确保ES正在运行。 如果您在Windows上,请导航到ES的bin目录并运行elasticsearch.bat。 如果您使用的是Linux,请按照此处的说明进行操作。
要创建一个空索引,您必须向<es_url>:<port> / <index_name>发出HTTP POST。 例如,使用cURL:
curl -X POST localhost:9200/world
您甚至可以使用自己选择的REST客户端(例如Postman)来调用ES REST API
设置JDBC导入器
从此处下载elasticsearch-jdbc二进制文件并将其解压缩到一个文件夹中,我们将其称为ES_IMPORTER。 ES_IMPORTER / bin中已经存在用于与MySQL和其他数据库一起使用的脚本,我们会将所有与导入相关的脚本放在同一文件夹中。
注意 :如果使用的是Oracle DB,则需要将JDBC驱动程序放在ES_IMPORTER / lib文件夹中。 对于MySQL等其他DB,PostgreSql JDBC驱动程序已经可用。
另一个注意事项 :elasticsearch-jdbc需要JDK 8
我们将创建以下文件(链接中可用的代码)来运行导入程序:
- world-importer.bat / world-importer.sh –用于启动导入程序
- world-importer-config.json –用于配置导入器
- world.sql –包含要执行以获取索引数据的SQL查询。
JDBC连接字符串,数据库用户名和密码可以在world-importer-config.json中进行更新。 此外,可以在同一文件中更新ES端口,ES主机名,ES索引名称,ES索引类型名称。
运行JDBC导入器
在运行导入程序之前,打开URL: http:// localhost:9200 / world
上面显示索引世界没有定义的结构
打开URL: http:// localhost:9200 / world / _search
上面显示索引世界中没有数据。
导航至目录:ES_IMPORTER / bin并运行world-importer.bat或world-importer.sh 。
导入程序完成后(应该立即完成),打开URL: http:// localhost:9200 / world / 。 现在,您将看到索引具有在映射键中定义的结构,也称为映射。 并且当您打开URL: http:// localhost:9200 / world / _search时,您将找到索引数据,该数据大约是hits字段报告的239个条目。
JDBC导入器的优点
- 易于导入数据,提供了许多配置选项。 并且可以安排重复运行。
- 支持创建嵌套对象和嵌套对象数组(在我们的示例中,大写字母是嵌套对象,而城市和语言是嵌套对象数组)
- 可以对SQL查询进行参数化
- 只有上次运行后更改的数据才能重新索引。
JDBC导入器的缺点
- 不支持ES版本5及更高版本
- 嵌套对象数组中可能存在重复的对象。 但是重复数据删除可以在应用程序层进行处理。
- 对最新ES版本的支持可能会延迟。
在本文的下一部分中,我们将:
- 创建索引的映射
- 了解用于索引的SQL
翻译自: https://www.javacodegeeks.com/2017/03/index-data-relational-database-elasticsearch-1.html
从关系数据库到Elasticsearch的索引数据– 1相关推荐
- 【Flink】使用Flink实现索引数据到Elasticsearch
1.概述 转载:使用Flink实现索引数据到Elasticsearch 建议看原文 使用Flink处理数据时,可以基于Flink提供的批式处理(Batch Processing)和流式处理(Strea ...
- python将ElasticSearch索引数据读入pandas dataframe实战
python将ElasticSearch索引数据读入pandas dataframe实战 # 导入基础包和库 import pandas as pdpd.set_option('display.max ...
- kinana 清空索引数据_(Elasticsearch)实战Elasticseartch、Logstash、Kibana
1.Elasticsearch的堆栈内存设置建议 image.png 2.elasticsearch.yml设置中文分词器: /usr/share/elasticsearch/bin/elastics ...
- kibana 查看有多少索引库_干货 | Elasticsearch、Kibana数据导出实战
1.问题引出 以下两个导出问题来自Elastic中文社区. 问题1.kibana怎么导出查询数据? 问题2:elasticsearch数据导出 就像数据库数据导出一样,elasticsearch可以么 ...
- 【ElasticSearch】在 ELASTICSEARCH 中使用管道重新索引数据 pipeline
1.概述 翻译:https://cinhtau.net/2017/05/01/reindex-data-with-pipeline/ 数据并不总是干净的.根据它的生成方式,数字可能会在 JSON 正文 ...
- Java网络商城项目 SpringBoot+SpringCloud+Vue 网络商城(SSM前后端分离项目)十四(Spring Data Elasticsearch,将数据添加到索引库)
Java网络商城项目 SpringBoot+SpringCloud+Vue 网络商城(SSM前后端分离项目)十四(Spring Data Elasticsearch,将数据添加到索引库) 一.创建El ...
- 详述 Elasticsearch 通过范围条件查询索引数据的方法
文章目录 情景 查询方法 通过命令实现范围查询 通过 API 实现范围查询 情景 在使用 Elasticsearch 的时候,我们可能会遇到需要以范围为条件查询索引数据的需求.有两种方法可以实现我们的 ...
- Elasticsearch 索引数据多了怎么办,如何调优,部署?
1 动态索引层面 基于模板+时间+rollover api滚动创建索引,举例:设计阶段定义:blog索引的模板格式为:blog_index_时间戳的形式,每天递增数据.这样做的好处:不至于数据量激增导 ...
- ElasticSearch教程-索引的介绍
我们现在开始进行一个简单教程,它涵盖了一些基本的概念介绍,比如索引(indexing).搜索(search)以及聚合(aggregations).通过这个教程,我们可以让你对Elasticsearch ...
最新文章
- 【Android】Pixel 2 解锁 Bootloader
- mysql打包成docker_web应用如何打包成docker镜像?
- 程序的不同段的区别和作用
- 李爽久:平安云如何解决金融同业互联专线痛点
- 认证拦截功能需求分析
- [导入]体验Asp.Net Mvc Preview5(3)-探索ModelBinder的工作原理
- js禁用按钮_探索js让你的网页“自己开口说话”
- pytorch学习笔记(十六):Parameters
- 微软 Build 2019 对开发者意味着什么?
- eclipse tomcat maven热部署
- “由于应用程序配置不正确,应用程序未启动。重新安装应用程序可能会纠正这个问题。”解决思路
- matlab 巴特沃斯滤波器频率响应,巴特沃斯滤波器matlab实现
- php array assoc,PHP array_udiff_assoc() 函数
- 计算机网络合集(除应用层之外)
- 路由协议RIP、OSPF、BGP比较
- 混合算法(SA+TS)解决TSP问题——lua实现(Microcity)
- Unreal Enginer4特性介绍-牛B闪闪的UE4
- HTML5--制作导航栏
- 开发者藏经阁——超全阿里系电子书大合集(打包下载)
- 半导体物理 第七章 金属半导体接触及其能级图
热门文章
- Oracle入门(十五)之数据库锁
- $router VS $route
- html 中一个格子拆分成两个_一个效果惊人的数字游戏
- 泛型数组列表ArrayList
- final 实例域+final类+final方法(阻止继承)
- jdk11换jdk8版本_在JDK 9(以及8)以及更高版本中,所有内容都可以作为一个流
- openapi_MicroProfile OpenAPI上的Swagger UI
- jdk10 换成jdk8_JDK 10的摘要Javadoc标签
- io流,装饰者模式_流与装饰器
- maven将第三方依赖_如何将商业第三方文物整合到您的Maven版本中