【问题标题】:How to store nested document as String in elastic search如何在弹性搜索中将嵌套文档存储为字符串
【发布时间】:2019-06-23 08:42:18
【问题描述】:

背景: 1) 我们正在构建一个 CDC 管道(使用 kafka & connect 框架)

2) 我们使用 debezium 来捕获 mysql Tx 日志

3) 我们正在使用 Elastic Search 连接器将文档添加到 ES 索引中

Debezium 生成的示例更改事件:

{
    "source" : {
      "before" : {
        "Id" : 97,
        "name" : "Northland",
        "code" : "NTL",
        "country_id" : 6,
        "is_business_mapped" : 0
      },
      "after" : {
        "Id" : 97,
        "name" : "Northland",
        "code" : "NTL",
        "country_id" : 6,
        "is_business_mapped" : 1
      },
      "source" : {
        "version" : "0.7.5",
        "name" : "__",
        "server_id" : 252639387,
        "ts_sec" : 1547805940,
        "gtid" : null,
        "file" : "mysql-bin-changelog.000570",
        "pos" : 236,
        "row" : 0,
        "snapshot" : false,
        "thread" : 614,
        "db" : "bazaarify",
        "table" : "state"
      },
      "op" : "u",
      "ts_ms" : 1547805939683
    }

我们想要什么:

我们只想在 kibana 中可视化 3 列:

1) before - 包含嵌套的 JSON 作为字符串

2) after - 包含嵌套的 JSON 作为字符串

3) source - 包含嵌套的 JSON 作为字符串

我可以在这里想到以下可能性:

a) 将嵌套的 JSON 转换为字符串 b) 在弹性搜索中合并列数据

我是弹性搜索的新手。有人可以指导我如何做到这一点。

我也尝试定义自定义映射,但它给了我例外。

【问题讨论】:

    标签: elasticsearch kibana apache-kafka-connect


    【解决方案1】:

    您始终可以在 Kibana 中将文档视为原始 JSON。 在弹性索引之前,您不需要对其进行操作。

    由于这与可视化有关,因此只能在 Kibana 中处理。 查看此link 以获取屏幕截图。

    请参考this 将您想要查看的列添加到结果中

    【讨论】:

      【解决方案2】:

      我不完全理解您的用例,但如果您想将一些 json 转换为它们的代表字符串,那么您可以使用 logstash,甚至可以使用 Elasticsearch ingest capabilities to convert an object (json) to a string

      从上面的链接,一个例子:

      PUT _ingest/pipeline/my-pipeline-id { "description": "转换 id 字段的内容为整数”,“处理器”:[ { “转变” : { “字段”:“来源”, “类型”:“字符串” } } ] }

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-21
        • 1970-01-01
        • 2021-01-21
        相关资源
        最近更新 更多