elasticsearch 用于字符串操作的Nifi jolt变换

9jyewag0  于 2023-04-05  发布在  ElasticSearch
关注(0)|答案(1)|浏览(149)

我有一个json文档,我需要应用jolt转换,我感谢任何帮助。这是我的json文档。

{
    "name": "Wine Seller 1",
    "in_stock": "3800",
    "sold": "47",
    "products": [
    {
        "product_id":"001",
        "product_name":"Wine - Maipo Valle Cabernet",
        "description":"Aliquam augue q\uam, sollicitudin \nvitae, \"consectetuer\" \$100eget, rutrum at"
    },
    {
        "product_id":"002",
        "product_name":"Bacardi",
        "description":"Praesent blandit \lacinia erat. \n Vestibulum \"sed\" magna"
    },
.,
.'
.,
.
}

我希望输出从description中删除所有,\n,\t,并保留所有的\”there. like below

{
    "name": "Wine Seller 1",
    "in_stock": "3800",
    "sold": "47",
    "products": [
        {
            "product_id": "001",
            "product_name": "Wine - Maipo Valle Cabernet",
            "description": "Aliquam augue quam, sollicitudin vitae, \"consectetuer\" $100eget, rutrum at"
        },
        {
            "product_id": "002",
            "product_name": "Bacardi",
            "description": "Praesent blandit lacinia erat. Vestibulum \"sed\" magna"
        },
.,
.,
.,
    ]
}
pvabu6sv

pvabu6sv1#

假设您希望在修复JSON数据后基于JSON数据删除\n\t组合,则可以在modify转换规范中连续使用splitjoin***函数,例如

[
  { // split the by "description" values by \n
    "operation": "modify-overwrite-beta",
    "spec": {
      "products": {
        "*": {
          "description": "=split('\n',@(1,&))"
        }
      }
    }
  },
  { // get rid of "\n"s
    "operation": "modify-overwrite-beta",
    "spec": {
      "products": {
        "*": {
          "description": "=join('',@(1,&))"
        }
      }
    }
  },
  { // split the by "description" values by \t
    "operation": "modify-overwrite-beta",
    "spec": {
      "products": {
        "*": {
          "description": "=split('\t',@(1,&))"
        }
      }
    }
  },
  { // get rid of "\t"s
    "operation": "modify-overwrite-beta",
    "spec": {
      "products": {
        "*": {
          "description": "=join('',@(1,&))"
        }
      }
    }
  }
]

或者你可以简化如下:

[
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "products": {
        "*": {
          "description": "=split('\n',@(1,&))",
          "descriptio*": "=join('',@(1,&))"
        }
      }
    }
  },
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "products": {
        "*": {
          "description": "=split('\t',@(1,&))",
          "descriptio*": "=join('',@(1,&))"
        }
      }
    }
  }
]

相关问题