Elasticsearch - 使用脚本结果作为值创建新字段
Elasticsearch - Create new field with script result as value
如何创建一个名为“消息”的新字段,其类型为“关键字”以及我的脚本结果的内容:
GET log-sup-app1-32012-2021-11-08t11-00-49/_search
{
"script_fields": {
"message": {
"script": {
"source": """
String str = doc['@mt'].value;
Map m = new HashMap();
for (key in params._source.keySet()) {
if (doc.containsKey(key)) {
if (doc[key].size() != 0) {
m.put(key, doc[key].value.toString());
}
}
}
for (Map.Entry entry : m.entrySet()) {
str = str.replace("{" + entry.getKey() + "}", entry.getValue());
}
return str; (e.g. returns 'This is the Test Result')
"""
}
}
}
}
预期的属性:
{
"properties": {
"message": {
"type": "keyword"
}
}
}
预期的搜索结果:
{
"message" : "This is the Test Result"
}
堆栈管理 -> 我的模式 -> 脚本字段
修复了问题或使用 runtime fields
如何创建一个名为“消息”的新字段,其类型为“关键字”以及我的脚本结果的内容:
GET log-sup-app1-32012-2021-11-08t11-00-49/_search
{
"script_fields": {
"message": {
"script": {
"source": """
String str = doc['@mt'].value;
Map m = new HashMap();
for (key in params._source.keySet()) {
if (doc.containsKey(key)) {
if (doc[key].size() != 0) {
m.put(key, doc[key].value.toString());
}
}
}
for (Map.Entry entry : m.entrySet()) {
str = str.replace("{" + entry.getKey() + "}", entry.getValue());
}
return str; (e.g. returns 'This is the Test Result')
"""
}
}
}
}
预期的属性:
{
"properties": {
"message": {
"type": "keyword"
}
}
}
预期的搜索结果:
{
"message" : "This is the Test Result"
}
堆栈管理 -> 我的模式 -> 脚本字段 修复了问题或使用 runtime fields