【问题标题】:Elastic search for .net.net 的弹性搜索
【发布时间】:2019-07-09 04:10:55
【问题描述】:

我想在我的应用程序中实现弹性搜索。我有 MS-SQL 数据库。

我已经安装了 Elastic 搜索。它正在显示 You Know, for Search。 我为 Nest 添加了 nuget 包。连接到弹性。使用 Nest 添加了一条记录。记录显示在 Kibana 中。

  1. 我想将 SQLdata 导入 Elastic
  2. MS-SQL 数据中的任何更改都应反映到 Elastic 中
  3. 在 Elastic 中搜索复杂的模糊匹配。

我坚持第一步。

【问题讨论】:

    标签: elasticsearch logstash mssql-jdbc


    【解决方案1】:

    从您的描述中我可以看出您安装了弹性搜索并且运行良好。

    第一步,您需要使用映射将 MS-SQL 中存在的数据迁移到 Elastic 搜索。您可以为此编写 Python 脚本。 Python 脚本应与索引及其相关文档进行映射。

    一个例子。 -- 假设您在 MSSQL 中有一个表,例如。员工表。然后逐行遍历每一行并准备一个包含一行的文档,id 将是特定行数。将其插入弹性搜索中。

    对于弹性搜索中的搜索 - 您需要根据您的要求使用匹配或复合匹配来查询文档。

    我在 python 中实现了相同的功能,并将数据从 postgres 迁移到弹性搜索。

    【讨论】:

    • 感谢您的回复。我想知道如何让它们保持同步。我只是对 Windows 的 Logstash 或 Beats(FileBeat...) 感到困惑。我想保持简单。 SQL 的任何更新都应直接反映到 Elastic 中。我以为我会使用河,但它被贬低了。
    • 不幸的是,我在旧版本的弹性搜索中工作,并且我使用手动事务管理来执行此操作。每当 PostgreSQL 中有更新/插入时,我都会在弹性搜索中进行相同的更新/插入。
    【解决方案2】:
    • 要将信息发送给 Elastic,您应该考虑 作为使用 REST API 的替代方案,Elastic 提供对 Web 的访问 API 允许您创建索引并查询记录和 你不依赖 Nuget。
    • 例如在 Elastic 中的一个索引下开始索引信息 称为 testIndex ,类型称为 testdata 和 0 的 Id,你会 使用与以下类似的 URI,此 URI 来自云端 Elastic 的版本,但您应该能够在托管的 环境:

      https://f1fadb41bd984c72981cb12d79a79203.us-west-1.aws.found.io:9243/testindex/testdata/0 有效载荷:

      { “用户”:“测试”, "post_date" : "2019-08-07", "message" : "弹性测试数据" }

      要查询数据,您将使用以下 URI:

      获取 https://f1fadb41bd984c72981cb12d79a79203.us-west-1.aws.found.io:9243/testindex/testdata/0

    • 您可以序列化包含来自 SQL 的数据的 C# 对象 数据库到 JSON 并将它们发布到弹性示例负载中。

    • 同步数据的过程可以是 Asp.net 核心中的定时后台作业、事件调度程序中调度的控制台应用程序或每当您检测到数据库成功更新时基于您的应用程序的事件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-24
      • 2022-08-17
      • 2021-11-23
      • 2018-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多