如何在弹性搜索中将嵌套文档存储为字符串

时间:2019-01-30 06:11:08

标签: elasticsearch kibana apache-kafka-connect

上下文: 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)之前-包含嵌套的JSON作为字符串

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

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

我可以在这里考虑以下可能性:

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

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

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

2 个答案:

答案 0 :(得分:0)

您始终可以在Kibana中将文档作为Raw JSON进行查看。 在弹性索引之前,您不需要操纵它。

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

引用this将要查看的列添加到结果

答案 1 :(得分:0)

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

在上面的链接中,示例:

  

PUT _ingest / pipeline / my-pipeline-id {“ description”:“将   id字段的内容转换为整数”,“处理器”:[       {         “兑换” : {           “ field”:“ source”,           “ type”:“字符串”         }       }]}