Elasticsearch提供强大的搜索功能,并支持数据的分片和复制。 因此,我们希望将数据库中可用的数据索引到Elasticsearch中。

有多种方法可以将数据索引到Elasticsearch中:

  1. 使用Logstash将源设置为DB,将接收器设置为Elasticsearch,并在需要时使用过滤器来构建JSON对象。
  2. 使用外部库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.batworld-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相关推荐

  1. 【Flink】使用Flink实现索引数据到Elasticsearch

    1.概述 转载:使用Flink实现索引数据到Elasticsearch 建议看原文 使用Flink处理数据时,可以基于Flink提供的批式处理(Batch Processing)和流式处理(Strea ...

  2. python将ElasticSearch索引数据读入pandas dataframe实战

    python将ElasticSearch索引数据读入pandas dataframe实战 # 导入基础包和库 import pandas as pdpd.set_option('display.max ...

  3. kinana 清空索引数据_(Elasticsearch)实战Elasticseartch、Logstash、Kibana

    1.Elasticsearch的堆栈内存设置建议 image.png 2.elasticsearch.yml设置中文分词器: /usr/share/elasticsearch/bin/elastics ...

  4. kibana 查看有多少索引库_干货 | Elasticsearch、Kibana数据导出实战

    1.问题引出 以下两个导出问题来自Elastic中文社区. 问题1.kibana怎么导出查询数据? 问题2:elasticsearch数据导出 就像数据库数据导出一样,elasticsearch可以么 ...

  5. 【ElasticSearch】在 ELASTICSEARCH 中使用管道重新索引数据 pipeline

    1.概述 翻译:https://cinhtau.net/2017/05/01/reindex-data-with-pipeline/ 数据并不总是干净的.根据它的生成方式,数字可能会在 JSON 正文 ...

  6. Java网络商城项目 SpringBoot+SpringCloud+Vue 网络商城(SSM前后端分离项目)十四(Spring Data Elasticsearch,将数据添加到索引库)

    Java网络商城项目 SpringBoot+SpringCloud+Vue 网络商城(SSM前后端分离项目)十四(Spring Data Elasticsearch,将数据添加到索引库) 一.创建El ...

  7. 详述 Elasticsearch 通过范围条件查询索引数据的方法

    文章目录 情景 查询方法 通过命令实现范围查询 通过 API 实现范围查询 情景 在使用 Elasticsearch 的时候,我们可能会遇到需要以范围为条件查询索引数据的需求.有两种方法可以实现我们的 ...

  8. Elasticsearch 索引数据多了怎么办,如何调优,部署?

    1 动态索引层面 基于模板+时间+rollover api滚动创建索引,举例:设计阶段定义:blog索引的模板格式为:blog_index_时间戳的形式,每天递增数据.这样做的好处:不至于数据量激增导 ...

  9. ElasticSearch教程-索引的介绍

    我们现在开始进行一个简单教程,它涵盖了一些基本的概念介绍,比如索引(indexing).搜索(search)以及聚合(aggregations).通过这个教程,我们可以让你对Elasticsearch ...

最新文章

  1. 【Android】Pixel 2 解锁 Bootloader
  2. mysql打包成docker_web应用如何打包成docker镜像?
  3. 程序的不同段的区别和作用
  4. 李爽久:平安云如何解决金融同业互联专线痛点
  5. 认证拦截功能需求分析
  6. [导入]体验Asp.Net Mvc Preview5(3)-探索ModelBinder的工作原理
  7. js禁用按钮_探索js让你的网页“自己开口说话”
  8. pytorch学习笔记(十六):Parameters
  9. 微软 Build 2019 对开发者意味着什么?
  10. eclipse tomcat maven热部署
  11. “由于应用程序配置不正确,应用程序未启动。重新安装应用程序可能会纠正这个问题。”解决思路
  12. matlab 巴特沃斯滤波器频率响应,巴特沃斯滤波器matlab实现
  13. php array assoc,PHP array_udiff_assoc() 函数
  14. 计算机网络合集(除应用层之外)
  15. 路由协议RIP、OSPF、BGP比较
  16. 混合算法(SA+TS)解决TSP问题——lua实现(Microcity)
  17. Unreal Enginer4特性介绍-牛B闪闪的UE4
  18. HTML5--制作导航栏
  19. 开发者藏经阁——超全阿里系电子书大合集(打包下载)
  20. 半导体物理 第七章 金属半导体接触及其能级图

热门文章

  1. Oracle入门(十五)之数据库锁
  2. $router VS $route
  3. html 中一个格子拆分成两个_一个效果惊人的数字游戏
  4. 泛型数组列表ArrayList
  5. final 实例域+final类+final方法(阻止继承)
  6. jdk11换jdk8版本_在JDK 9(以及8)以及更高版本中,所有内容都可以作为一个流
  7. openapi_MicroProfile OpenAPI上的Swagger UI
  8. jdk10 换成jdk8_JDK 10的摘要Javadoc标签
  9. io流,装饰者模式_流与装饰器
  10. maven将第三方依赖_如何将商业第三方文物整合到您的Maven版本中