elasticsearch 动态模板设置
自定义动态映射
如果你想在运行时增加新的字段,你可能会启用动态映射。然而,有时候,动态映射 规则
可能不太智能。幸运的是,我们可以通过设置去自定义这些规则,以便更好的适用于你的数据。
日期检测
当 Elasticsearch 遇到一个新的字符串字段时,它会检测这个字段是否包含一个可识别的日期,比如 2014-01-01
。如果它像日期,这个字段就会被作为 date
类型添加。否则,它会被作为 string
类型添加。
有些时候这个行为可能导致一些问题。想象下,你有如下这样的一个文档:
{"note": "2014-01-01"}
假设这是第一次识别 note
字段,它会被添加为 date
字段。但是如果下一个文档像这样:
{"note": "Logged out"}
这显然不是一个日期,但为时已晚。这个字段已经是一个日期类型,这个 不合法的日期
将会造成一个异常。
日期检测可以通过在根对象上设置 date_detection
为 false
来关闭:
PUT /my_index
{
"mappings": {
"my_type": {
"date_detection": false
}
}
}
使用这个映射,字符串将始终作为 string
类型。如果你需要一个 date
字段,你必须手动添加。
我们可以通过以下方式对日期格式的数据进行格式化:
PUT my_index
{
"mappings": {
"my_type": {
"properties": {
"date": {
"type": "date",
"format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
}
}
}
}
}
可以使用 || 分隔多个格式 作为分隔符。 将依次尝试每种格式,直到找到匹配的格式。如果不指定,则使用默认格式:
"strict_date_optional_time||epoch_millis"
默认可以被解析的 date 类型格式如下所示:
- 包含格式化日期的字符串,例如 “2015-01-01”或“2015/01/01 12:10:30”。
- 代表milliseconds-since-the-epoch的长整型数。
- 代表seconds-since-the-epoch的整型数。
需要注意:以上默认日期类型是在未给定固定类型的情况下,会按照默认方式自动匹配的。
动态模板
使用 dynamic_templates
,你可以完全控制新检测生成字段的映射。你甚至可以通过字段名称或数据类型来应用不同的映射。
每个模板都有一个名称,你可以用来描述这个模板的用途, 一个 mapping
来指定映射应该怎样使用,以及至少一个参数 (如 match
) 来定义这个模板适用于哪个字段。
模板按照顺序来检测;第一个匹配的模板会被启用。例如,我们给 string
类型字段定义两个模板:
es
:以_es
结尾的字段名需要使用spanish
分词器。en
:所有其他字段使用english
分词器。
我们将 es
模板放在第一位,因为它比匹配所有字符串字段的 en
模板更特殊:
PUT /my_index
{
"mappings": {
"my_type": {
"dynamic_templates": [
{ "es": {
"match": "*_es", -- (1)
"match_mapping_type": "string",
"mapping": {
"type": "string",
"analyzer": "spanish"
}
}},
{ "en": {
"match": "*", -- (2)
"match_mapping_type": "string",
"mapping": {
"type": "string",
"analyzer": "english"
}
}}
]
}}}
匹配字段名以
_es
结尾的字段。匹配其他所有字符串类型字段。
match_mapping_type
允许你应用模板到特定类型的字段上,就像有标准动态映射规则检测的一样, (例如 string
或 long
)。
match
参数只匹配字段名称, path_match
参数匹配字段在对象上的完整路径,所以 address.*.name
将匹配这样的字段:
{
"address": {
"city": {
"name": "New York"
}
}
}
unmatch
和 path_unmatch
将被用于未被匹配的字段。
elasticsearch 动态模板设置的更多相关文章
- elasticsearch 动态模板
在elasticsearch中,如果你有一类相似的数据字段,想要统一设置其映射,就可以用到一项功能:动态模板映射(dynamic_templates). 每个模板都有一个名字用于描述这个模板的用途,一 ...
- ElasticStack学习(八):ElasticSearch索引模板与聚合分析初探
一.Index Template与Dynamic Template的概念 1.Index Template:它是用来根据提前设定的Mappings和Settings,并按照一定的规则,自动匹配到新创建 ...
- Elasticsearch7.X 入门学习第八课笔记-----索引模板和动态模板
原文:Elasticsearch7.X 入门学习第八课笔记-----索引模板和动态模板 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接: ...
- vert.x学习(六),动态模板与静态文件的结合
这篇学习在动态模板里面引入css,把动态模板与静态文件结合起来使用. 编写DynamicReference.java package com.javafm.vertx.helloworld; impo ...
- DevExpress SpreadSheet报表模板设置 z
DevExpres SpreadSheetControl报表模板设置,这一个还是挺牛逼的,字段绑定直接在单元格里面设置公式(=Field("字段名")),当然直接拖更方便, 跟xt ...
- 迷你MVVM框架 avalonjs 沉思录 第3节 动态模板
模板的发明是编程史上的一大里程碑,让我们摆脱了烦锁且易出错的字符串拼接,维护性大大提高. 都在JSP,ASP时代,人们已经学会使用include等语句,将多个页面片断拼接成一个页面. 此外,为了将数据 ...
- spark写入ES(动态模板)
使用es-hadoop插件,主要使用elasticsearch-spark-20_2.11-6.2.x.jar 官网:https://www.elastic.co/guide/en/elasticse ...
- Logstash动态模板映射收集Nginx的Json格式日志
Logstash传输给ES的数据会自动映射为5索引,5备份,字段都为text的的索引.这样基本上无法进行数据分析.所以必须将Logstash的数据按照既定的格式存储在ES中,这时候就要使用到ES模板技 ...
- 使用FreeMarker配置动态模板
FreeMarker动态模板 目录 FreeMarker动态模板 前言 准备工作 FreeMarker 代码构建 项目结构 创建 Configuration 实例 调用 模板文件 调用结果 Tips ...
随机推荐
- [福大软工] Z班 第11次成绩排行榜
注:本次成绩排行榜是针对团队Alpha阶段冲刺博客的得分统计 作业要求 http://www.cnblogs.com/easteast/p/7749181.html 评分细则 在团队Alpha阶段刚开 ...
- HDOJ2041_超级楼梯(斐波拉契数列)
正常简单题:通过仔细观察推断即可看出这是一个斐波拉契数列的题目. HDOJ2041_超级楼梯 在做这题的时候我误入了思维盲区,只想着什么方法可以解决,没有看出是斐波拉契数列.因此第一次用组合数方法打了 ...
- Machine Learning Based Proactive Flow Entry Deletion for OpenFlow
来源:IEEE 2018 作者:Hemin Yang and George F.Riley 摘要: 流表容量有限,因此高效管理流表至关重要.本文重点讨论了OpenFlow中定义的一种流表管理机制,即能 ...
- WinForm(WPF) splash screen demo with C#
https://www.codeproject.com/Articles/21062/Splash-Screen-Control https://www.codeproject.com/Article ...
- 自定义组件的 v-model
Vue.component('base-checkbox', { model: { prop: 'checked', event: 'change' }, props: { checked: Bool ...
- Mordern Effective C++ --auto
5. 优先使用auto而非显示类型声明 在C++之中,使用auto关键字声明类型可以将程序员从输入繁琐的类型中解放出来,编译器会自动推导出变量的实际类型. template<typename I ...
- MongoDB导入导出以及数据库备份以及.dat数据
1.导出工具:mongoexport 1.概念: mongoDB中的mongoexport工具可以把一个collection导出成JSON格式或CSV格式的文件.可以通过参数指 ...
- mysql学习笔记一 —— 数据的增删改查
1.连接mysql mysql 直接回车(是以root身份,密码空,登陆的是本机localhost) [root@www mysql]# mysql -uroot -p123 -S /var/lib/ ...
- sql语句中日期相减的操作
select datediff(year, 开始日期,结束日期); --两日期间隔年select datediff(quarter, 开始日期,结束日期); --两日期间隔季select datedi ...
- 一对一 只需将另一个表的id设置为主键和外键即可
一对一 只需将另一个表的id设置为主键和外键即可