elasticsearch 有没有办法将弹性搜索字段类型从小写转换为标题?
我对其中一个关键字段的弹性搜索输出将以所有小写字母填充,如下所示
elasticsearch 有没有办法将弹性搜索字段类型从小写转换为标题?,
elasticsearch,search,logstash,elk,
elasticsearch,Search,Logstash,Elk,我对其中一个关键字段的弹性搜索输出将以所有小写字母填充,如下所示 { "key" : "activatedevice", "doc_count" : 2 }, 有没有办法将映射添加到此字段,以便我的输出如下所示 { "key" : "ActivateDevice", "doc_count" : 2 }' 目前,我已为此键定义了映射,如下所示 "Call
{
"key" : "activatedevice",
"doc_count" : 2
},
有没有办法将映射添加到此字段,以便我的输出如下所示
{
"key" : "ActivateDevice",
"doc_count" : 2
}'
目前,我已为此键定义了映射,如下所示
"CallingServiceName": {
"index": "not_analyzed",
"type": "string"
},
如何实现这一目标,有什么建议吗
谢谢猜测这种连接字符串的单词边界是相当困难的 如果字符串是空格分隔的(或具有任何其他可拆分模式),则可以使用以下聚合脚本将
CallingServiceName
转换为TitleCase
:
{
"size": 0,
"aggs": {
"by_csn": {
"terms": {
"script": {
"source": """
String toTitleCase(def s){
def parts = / /.split(s);
String titleCaseString = "";
for (def part : parts){
titleCaseString = titleCaseString + toProperCase(part);
}
return titleCaseString;
}
String toProperCase(def s) {
return s.substring(0, 1).toUpperCase() +
s.substring(1).toLowerCase();
}
return toTitleCase(doc['CallingServiceName.keyword'].value);
"""
},
"size": 10
}
}
}
}
请注意,您传递给
toTitleCase
函数的字段需要为关键字类型
,或者在映射中将字段数据
设置为true。谢谢Joe,遵循了您建议的方法,效果良好。接受你的回答。