顿搜
飞过闲红千叶,夕岸在哪
类目归类
Elasticsearch在用户写入数据时检测到新的字段时,会动态地将该字段添加到类型映射中,由dynamic参数来控制此行为。
可以通过将dynamic参数设置为true或明确指示Elasticsearch根据传入的文档来动态创建字段。
PUT myindex
{
"mappings": {
"date_detection": false
}
}
#写入文档数据(默认使用动态映射创建索引映射)
PUT myindex/_doc/1
{
"create_date": "2021/09/02"
}
#查询索引映射
GET myindex/_mapping得到的结果
{
"myindex" : {
"mappings" : {
"date_detection" : false,
"properties" : {
"create_date" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
}
}
}
}
}创建索引映射中日期的自定义格式
PUT myindex
{
"mappings": {
"dynamic_date_formats": ["yyyy/MM/dd"]
}
}创建映射并使用数字检测模式
PUT myindex
{
"mappings": {
"numeric_detection": true
}
}动态映射模板使得在默认的动态字段映射规则之外能够更好地控制Elasticsearch如何映射数据
可以通过将dynamic参数设置为true来启用动态映射模式,然后使用动态模板来定义自定义映射,这些映射可以根据匹配条件应用于动态添加的字段
PUT myindex
{
"mappings": {
"dynamic_templates": [
{
"my_integers_mapping": {
"match_mapping_type": "long",
"mapping": {
"type": "integer"
}
}
},
{
"my_strings_mapping": {
"match_mapping_type": "string",
"mapping": {
"type": "text",
"fields": {
"raw": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
}
]
}
}将所有整数字段映射为integer而不是long,所有string字段都映射为text和keyword
PUT myindex
{
"mappings": {
"dynamic_templates": [
{
"strings_as_keywords": {
"match_mapping_type": "string",
"mapping": {
"type": "text",
"norms": false, // 关闭评分功能
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
}
]
}
}在进行时间序列分析时,通常会有许多数字字段,一般会对这些字段进行聚合计算,并不会通过这些字段进行搜索。
在这种情况下,我们可以关闭对这些字段创建索引的功能,这样做不仅可以节省磁盘空间,还可以提升索引库的性能。
PUT myindex
{
"mappings": {
"dynamic_templates": [
{
"unindexed_longs": {
"match_mapping_type": "long",
"mapping": {
"type": "long",
"index": false #禁止创建索引(本质是禁止该字段中的字符串被分词建立索引)
}
}
},
{
"unindexed_doubles": {
"match_mapping_type": "double",
"mapping": {
"type": "float",
"index": false
}
}
}
]
}
}PUT myindex
{
"mappings": {
"dynamic_templates": [
{
"longs_as_strings": {
"match_mapping_type": "string",
"match": "long_*",
"unmatch": "*_text",
"mapping": {
"type": "long",
"enable": false
}
}
},
{
"longs_as_strings": {
"match_pattern": "regex",
"match": "^profit_\\d+$",
"mapping": {
"type": "long",
"index": false,
"norms": false,
"doc_values": false
}
}
}
]
}
}针对对象中包含对象的情况
字段路径映射是使用path_match或者path_unmatch参数的值来进行控制的
PUT myindex
{
"mappings": {
"dynamic_templates": [
{
"full_name": {
"path_match": "person.*", // 表示可以匹配到person中的任意字段
"path_unmatch": "*.desc", // 表示可匹配到任意对象下的desc字段
"mapping": {
"type": "text",
"copy_to": "full_name"
}
}
}
]
}
}PUT /myindex
{
"mappings": {
"properties": {
"name":{
"type": "text"
},
"age":{
"type": "long"
},
"actiontime":
{
"type": "date",
"format":"yyyy-MM-dd HH:mm:ss"
},
"describe":
{
"type": "keyword"
}
}
}
}