我們有一個帶有默認管道的索引,它將一個欄位轉換為布林值,就像這里記錄的那樣https://www.elastic.co/guide/en/elasticsearch/reference/7.10/convert-processor.html 我們正在使用 Elasticsearch v7.10 .
有沒有辦法創建一個管道來根據欄位名稱后綴(如“_b”)轉換多個欄位?就像是:
PUT _ingest/pipeline/string-to-bool
{
"description": "converts fields ending in '_b' to boolean",
"processors" : [
{
"convert" : {
"field": "*_b",
"type": "boolean"
}
}
]
}
uj5u.com熱心網友回復:
特長;
據我所知,轉換處理器不允許模糊匹配。
解決方法
正如您提議的那樣,您可以撰寫一個腳本來完成這項作業。
PUT _ingest/pipeline/string-to-bool-script
{
"processors" : [
{
"script": {
"lang": "painless",
"source": """
for (key in ctx.keySet()) {
if (key.endsWith("_b")) {
ctx[key] = Boolean.parseBoolean(ctx[key]);
}
}
"""
}
}
]
}
POST /_ingest/pipeline/string-to-bool-script/_simulate
{
"docs": [
{
"_index": "index",
"_id": "id",
"_source": {
"plop_b": "true",
"_b": "false"
}
}
]
}
請記住,這非常簡單,并且僅適用于值為true/的字串false(不區分大小寫)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/481752.html
上一篇:無法部署Firestore云功能
下一篇:嘗試在elasticsearch7.8.1中建立索引時,出現錯誤說“欄位”太大,必須是<=32766有解決辦法嗎?
