首页 > 数据库 >您在 Elasticsearch 中的数据库数据

您在 Elasticsearch 中的数据库数据

时间:2022-09-21 12:57:47浏览次数:117  
标签:jdbc 数据库 Elasticsearch SQL 数据 Logstash

您在 Elasticsearch 中的数据库数据

如果您像我一样喜欢 Elasticsearch 的灵活性和可扩展性。与 Kibana 搭配使用,它成为利用数据的完美工具,即使对于非技术人员也是如此。

我最近需要实时向我的非技术业务合作伙伴展示一些特定的用户数据,以便他们可以 A/B 测试他们的一些营销策略。通过我的典型日志结构,其中一些数据已经在我的 Elasticsearch 实例中。不幸的是,最重要的数据不是。

我有两个选择。

  1. 更改我的所有后端代码,以便在将数据保存到数据库时也将此信息记录到 Elasticsearch。
  2. 轮询我的数据库并将相关信息发送到 Elasticsearch

选项1是可靠的。您拥有您所期望的所有控制权,并且您可以利用您已经在做的任何日志记录。缺点是它需要改变你的后端。就我而言,我需要来自该系统几个非常不同部分的几条数据,这对于我的用例来说似乎太耗时了,尤其是在时间是我最宝贵的资产的创业世界中。

选项 2 似乎非常合适!完成速度很快,不需要我接触系统的任何其他部分。

让我们看看你是怎么做到的!

先决条件

我正在使用关系 SQL 数据库,因此这组步骤将重点关注这一点。

因此,我使用 JDBC 作为连接器。

我正在 Linux 上完成这个过程,特别是 Ubuntu。您可以更改操作系统特定的命令以满足您的需要。

日志存储

Logstash 是您的面包和黄油。它驱动所有数据的轮询和发送,并且非常容易配置。我第一次通过这个过程一直到生产不到 1 小时。

  1. 安装 Logstash — https://www.elastic.co/guide/en/logstash/current/installing-logstash.html

  2. 在 /etc/logstash/conf.d 创建一个配置文件
    您可以随意命名,只需将扩展名设为“.conf”即可。即dbtoelastic.conf
    Logstash 足够聪明,可以在此位置搜索配置文件,因此您无需以任何方式连接它。

  3. 打开那个文件,让我们开始配置吧!

    输入 {
    数据库{
    jdbc_driver_library => "jdbc 连接器的路径"
    jdbc_driver_class => “com.mysql.jdbc.Driver”
    jdbc_connection_string => “jdbc:mysql:// / "
    jdbc_user => “admin” <- 你的数据库用户
    jdbc_password => “pass” <- 你的数据库密码
    jdbc_paging_enabled => 真
    tracking_column => “unix_ts_in_secs”
    use_column_value => true
    tracking_column_type => “数字”
    schedule => “*/5 * * * *” <- 每 5 分钟运行一次
    statement => "SELECT UserInfo.userId, UserInfo.name FROM UserInfo" <- 获取数据的 SQL 语句
    }
    }

jdbc_driver_library 只是服务器上 jdbc 驱动程序的路径。
jdbc_driver_class 是与您的数据库匹配的驱动程序类。
jdbc_connection_string 是您的数据库的路径

这里最重要的部分是 陈述 部分。这是一个提取您关心的数据的 SQL 调用。这可以像您希望的那样简单或复杂。我的生产使用最终是十几个带有一些聚合的表,到目前为止我遇到了 0 个问题。为了这篇文章,我保持 SQL 语句非常简单。

最后,我们想告诉 Logstash 如何处理我们的数据:

 输出 {  
 弹性搜索{  
 索引 => “prodDb_idx”  
 ilm_enabled => 假  
 cloud_id => "弹性搜索云 ID"  
 api_key => "弹性搜索 API 密钥"  
 ssl => 真  
 document_id => "%{userId}"  
 }  
 }

这是指示 Logstash 将我们的数据发送到我们的 Elasticsearch 实例。在这种情况下,我们正在创建并使用一个名为“prodDb_idx”的新索引。

另一件需要注意的重要事情是我手动将文档 ID 指定为我的用户 ID。这样做意味着每次 Logstash 轮询我的数据库时,我不会在 Elasticsearch 中为具有该用户 ID 的相同 SQL 结果行获得重复行。

4. 运行 Logstash!我建议使用已设置的服务,以便您获得服务的所有好处:

 systemctl 启动logstash

Logstash 具有相当可读的控制台输出。您将很快知道您的配置是否出现问题。

弹性搜索

现在我们可以跳到 Elasticsearch 端来确保一切正常。

您可以很容易地完成此操作,但在我们上面指定的索引上运行快速查询(即在开发控制台上)。

 获取 prodDb_idx/_search  
 {  
 “询问”: {  
 “匹配全部”:{}  
 }  
 }

要么它会告诉你索引不存在

Something must be wrong with Logstash config

在这种情况下,您的 Logstash 配置有问题,因此请返回上一步。或者你会看到你查询的数据!

We got data!

从这里您可以完成所有典型的 Elasticsearch 工作!我能够创建保存的搜索并利用这些数据制作一个漂亮的仪表板,这样我的队友就可以看到和连接他们以前无法看到的信息!

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明

本文链接:https://www.qanswer.top/38472/42192112

标签:jdbc,数据库,Elasticsearch,SQL,数据,Logstash
From: https://www.cnblogs.com/amboke/p/16715203.html

相关文章

  • 获得 Google 数据分析证书后 60 天
    获得Google数据分析证书后60天好日子的读者,GoogleDataAnalyticsCertificate在完成我的谷歌数据分析专业证书2个月~60天后,我不得不说这是一段地狱般的旅程,......
  • 达梦数据迁移
    1、迁移准备停止应用确认要迁移的用户(模式、数据库)记录原数据库中要迁移的对象的数量记录原数据库中要迁移的所有对象名称记录原数据库中要迁移的表的数据量(行数)创建......
  • 美团数据库运维自动化系统构建之路
    文章链接 美团数据库运维自动化系统构建之路-美团技术团队(meituan.com)本文整理自美团点评技术沙龙第10期:数据库技术架构与实践。美团点评技术沙龙由美团点评技术团......
  • 29. [实例]抓取动态加载数据
    1.前言本节讲解如何抓取豆瓣电影“分类排行榜”中的电影数据(https://movie.douban.com/chart),比如输入“犯罪”则会输出所有犯罪影片的电影名称、评分,效果如下所示:剧情|......
  • Mysql SQL查询今天、昨天、n天内、第n天的数据
    查询5分钟前的数据select*fromtablewhereend_datebetweendate_add(now(),interval-300SECOND)andNOW()  查询当天的所有数据SELECT*FROM表名WHEREDAT......
  • 我的 Voi 滑板车在哪里:[结论] 今年夏天我从 Voi 滑板车数据中学到了什么
    我的Voi滑板车在哪里:[结论]今年夏天我从Voi滑板车数据中学到了什么这篇博文总结了我从我的Voi滑板车系列在哪里.我在夏初开始了这项研究,旨在通过收集Voi滑板车......
  • 用于数据准备的 Python — 探索和清理数据集
    用于数据准备的Python—探索和清理数据集什么是数据准备?数据准备是收集、组合、结构化和组织数据的过程,以便将其用于商业智能(BI)应用程序、分析和数据可视化。此......
  • 第二章 ES数据操作与集群
    一、回顾1.介绍ES2.ES原理3.ES功能4.ES使用场景5.ES安装1)ES配置文件(单点配置)[root@es01~]#grep'^[a-z]'/etc/elasticsearch/elasticsearch.ymlnode.name:es-1......
  • 因担心漏洞、数据暴露风险,企业放缓开源软件使用速度
    Anaconda发布了年度2022年数据科学现状报告,揭示了数据科学,机器学习(ML)和人工智能(AI)行业面临的广泛趋势,机遇和感知障碍。虽然开源软件是由开发人员创建的,也是为开发人员创......
  • oracle 数据回滚
    selectto_char(sysdate,'yyyy-mm-ddhh24:mi:ss')fromdual;select*fromt_payment_detail_cjasoftimestampto_timestamp('2022-09-2016:30:12','yyyy-mm-ddhh2......