我有一个 json 文件作为 Elasticsearch 7.10.1 集群的输入。json 的格式类似于:
{
"data" : "eyJtZXRyaWNfc3RyZWFtX25hbWUiOiJtGltZW5zaW9ucy...
}
Run Code Online (Sandbox Code Playgroud)
json中的数据值是json的base64。如何在elasticsearch中创建一个映射来解码base64值并在解码的json内的每个字段上创建索引?
摄取管道来救援!您可以创建一个摄取管道,该管道将解码 Base64 编码字段,然后解析生成的 JSON 并将所有字段添加到文档中。它基本上是这样的:
PUT _ingest/pipeline/b64-decode
{
"processors": [
{
"script": {
"source": "ctx.decoded = ctx.b64.decodeBase64();"
}
},
{
"json": {
"field": "decoded",
"add_to_root": true
}
},
{
"remove": {
"field": "decoded"
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
然后您可以在索引新文档时引用该摄取管道,如下所示:
PUT index/_doc/1?pipeline=b64-decode
{
"b64": "eyJmaWVsZCI6ICJoZWxsbyB3b3JsZCJ9"
}
Run Code Online (Sandbox Code Playgroud)
该b64字段包含以下 base64 编码的 JSON
{ "field" : "hello world" }
Run Code Online (Sandbox Code Playgroud)
最后,将被索引的文档将如下所示:
{
"b64" : "eyJmaWVsZCI6ICJoZWxsbyB3b3JsZCJ9",
"field" : "hello world"
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1076 次 |
| 最近记录: |