15.1 动态field映射
15.1.1 Customizing detected date formats
- dynamic_date_formats可以自定义以支持所需的 date formats:
PUT my-index-000001
{
"mappings": {
"dynamic_date_formats": ["MM/dd/yyyy"]
}
}
PUT my-index-000001/_doc/1
{
"create_date": "09/25/2015"
}
15.1.2 Numeric detection
- 虽然JSON支持本机floating point和integer data types,但某些应用程序或语言有时可能会将数字呈现为string
- 通常正确的解决方案是显式映射这些field,但可以启用Numeric detection(默认情况下禁用)以自动执行此操作:
PUT my-index-000001
{
"mappings": {
"numeric_detection": true
}
}
PUT my-index-000001/_doc/1
{
"my_float": "1.0",
"my_integer": "1"
}
15.2 动态模板
- 可以使用动态模板来定义自定义映射,这些映射可以根据匹配条件应用于动态添加的field:
- match_mapping_type 对 Elasticsearch 检测到的数据type进行操作
- match并unmatch使用模式匹配field名称
- 如果动态模板未定义match_mapping_type、match或 path_match,则它将不匹配任何field
- 但可以在模板变量dynamic_templates部分按名称引用模板
- 使用映射规范中的{name}和{dynamic_type} 模板变量作为placeholders
- 动态模板被指定为命名对象数组:
"dynamic_templates": [
{
"my_template_name": {
... match conditions ...
"mapping": { ... }
}
},
...
]
- 验证动态模板
- 如果提供的映射包含无效的映射片段,则返回验证错误
- 在索引时应用动态模板时进行验证,并且在大多数情况下,在动态模板更新时进行验证
- 在某些情况下,提供无效的映射片段可能会导致动态模板的更新或验证失败:
- 如果没有match_mapping_type指定但模板对至少一种预定义的映射类型有效,则映射片段被视为有效
- 如果{name}在映射片段中使用了占位符,则在更新动态模板时会跳过验证
- 模板按顺序处理按照第一个匹配模板选取
- 通过更新映射API放置新的动态模板时,将覆盖所有现有模板
- 这允许动态模板在最初添加后重新排序或删除
- 如果提供的映射包含无效的映射片段,则返回验证错误
- 在动态模板中映射运行时field
- 如果希望 Elasticsearch 将某种type的新field动态映射为运行时field,需
"dynamic":"runtime"在索引映射中设置- 这些field未编入 index,并_source在查询时加载
- 或者,可以使用默认的动态映射规则,然后创建动态模板将特定field映射为运行时field
- "dynamic":"true"在索引映射中设置 ,然后创建一个动态模板以将特定type的新field映射为运行时field
- 如果希望 Elasticsearch 将某种type的新field动态映射为运行时field,需
-
以下请求定义了一个名为strings_as_ip的动态模板strings_as_ip
- match_mapping_type
- match_mapping_type是由JSON解析器检测到的数据type
- 因为 JSON 不区分 long和 integer或 double和 float,所以它总是选择更广泛的数据type,例如long for integers和double for floating-point numbers
- 使用wildcard ( *) 匹配所有数据type
-
例如,如果想将所有整数field映射为integer而不是 long,并且所有string field都映射为text和keyword,可以使用以下模板:
- match 和 unmatch
- match参数使用模式匹配field名称,同时 unmatch使用模式排除匹配的field match
- match_pattern参数调整是以完整Java正则表达式匹配,而不是简单的wildcard,例如:
"match_pattern": "regex",
"match": "^profit_\d+$"
-
示例:匹配以string名称开头的所有fieldlong_(以结尾的field除外_text)并将它们映射为long field:
- path_match 和 path_unmatch
-
示例:将名称对象中任何field的值复制到top-level full_name field,中间field除外:
-
-
例如,index以下文档将导致错误,因为该path_match设置还匹配对象field
name.title,该field无法映射为文本:
- 模板变量
-
示例:将所有string field设置为使用analyzer与该field同名的field,并禁用doc_values所有非string field:
-
-
Structured search
-
text-only mappings for strings
-
text-only mappings for strings
-
index一个简单的文档
- text-only mappings for strings
GET my-index-000001/_mapping
-
Disabled norms
-
时间序列
大数据视频推荐:
腾讯课堂
CSDN
ELK入门精讲
AIOps智能运维实战
ELK7 stack开发运维
大数据语音推荐:
ELK7 stack开发运维
企业级大数据技术应用
大数据机器学习案例之推荐系统
自然语言处理
大数据基础
人工智能:深度学习入门到精通
网友评论