我的应用程序中的许多字符串字段需要在elasticsearch 5.3中动态映射。所有以id或id结尾的新字段都应该通过弹性自动映射和索引:
"_my_propertyId":
{
"type": "keyword"
}
我为这个
定义了索引/类型的动态模板 "mappings": {
"my_type": {
"dynamic_templates": [
{
"id_as_keywords": {
"match": "*id|*Id|*Ids",
"match_mapping_type": "string",
"mapping": {
"type": "keyword"
}
}
}
]
然而,弹性仍然会产生如下属性:
"_someIds": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
我不确定我做错了什么或为什么这是动态字符串字段的默认映射。但是,我需要能够动态映射以id或id结尾的所有属性作为关键字,而不使用ignore_above和完全索引,以便我可以使用searchAPI搜索它们。想法?为什么这是现在的默认字符串映射(我理解关键字/文本的介绍,但仍然)?
更新
在这些默认设置上找到了一篇很好的文章:
答案 0 :(得分:1)
您可以使用match_pattern
参数来更好地控制match
参数。在下面找到更新的动态模板:
"dynamic_templates": [
{
"id_as_keywords": {
"match_mapping_type": "string",
"match_pattern": "regex",
"match": ".*(id|Id|Ids)",
"mapping": {
"type": "keyword"
}
}
}
]
您可以详细了解match_pattern
here。