在 Mapping 里面,将 dynamic 参数设置成 strict 可以拒绝索引包含未知字段的文档。 此条 Tips 由 medcl 贡献。

建立索引模板以后,对应的索引接收不到数据了

Elasticsearch | 作者 sailershen | 发布于2019年07月19日 | 阅读数:1941

索引bj-sip_register接收到的数据(_source的值)是:
ouyu-number:678050 ouyu-version:230 platform:Android register-ip:192.168.1.1 reg_time:2019-07-19 10:40:44 @timestamp:Jul 19, 2019 @ 10:40:44.151 @version:1 _id:fZoaCGwByte0p7RJaGDc _type:_doc_index:bj-sip_register _score: -
这个索引原始mapping的值:
{
"mapping": {
"properties": {
"@timestamp": {
"type": "date"
},
"@version": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"ouyu-number": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"ouyu-version": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"platform": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"reg_time": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"register-ip": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
}
}

针对这个索引,我建立了索引模板,改了几个字段的类型,@version改为integer,ouyu-number和ouyu-version改为integer,reg_time改为date,register-ip改为ip。
PUT _template/sip_register_template-1
{
"index_patterns": ["bj-sip_register"],
"settings": {
"number_of_shards": 1
},
"mappings": {
"properties": {
"@timestamp": {
"type": "date"
},
"@version": {
"type": "integer",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"ouyu-number": {
"type": "integer",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"ouyu-version": {
"type": "integer",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"platform": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"reg_time": {
"type": "date",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"register-ip": {
"type": "ip",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
}
}

在Index Management和Index patterns里删除原bj-sip_register索引,再在Index patterns里重建这个索引,但是发现这个索引完全不接收上面列出的日志数据,不知道哪里不对?
已邀请:

laoyang360 - 《一本书讲透Elasticsearch》作者,Elastic认证工程师 [死磕Elasitcsearch]知识星球地址:http://t.cn/RmwM3N9;微信公众号:铭毅天下; 博客:https://elastic.blog.csdn.net

赞同来自: sailershen

1、写入的地方,如果写不进,会有报错信息,贴出出错信息;
2、查一下相关的索引是否真正删除了。

sailershen

赞同来自:

谢谢laoyang360老师的指导。
在Elasticsearch.log里的确看到错误提示说解析数据格式失败。
根据Ombres老师的多次指教,最终我把索引模板建立起来了(reg_time的类型改为date,register-ip的类型改为ip,其它保持text),语句是:
PUT _template/sip_register_template-1
{
"index_patterns": ["bj-sip_register"],
"settings": {
"number_of_shards": 1
},
"mappings": {
"properties": {
"@timestamp": {
"type": "date"
},
"@version": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"ouyu-number": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"ouyu-version": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"platform": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"reg_time": {
"type": "date",
"format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"register-ip": {
"type": "ip",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
}
}
然后删除索引,重建索引,这个索引可以正常接收数据并显示了。
 

要回复问题请先登录注册