为什么这些字段落入 elasticsearch 而我的索引模板中没有定义?
Why are these fields falling through to elasticsearch that are not defined in my index template?
我在索引模板中禁用了动态字段:
{
"template": "logstash-mysexylogs*",
"order": 10,
"mappings": {
"_default_": {
"dynamic": false,
"_all": {
"enabled": false
},
现在当我在 Kibana 中查看我的日志时,我偶尔会看到:
这些字段未在模板中定义,因此它们根本不应该存在,但对于一些日志,我会看到它们,如屏幕截图所示。
为什么会发生这种情况并且只发生在少数(不是所有日志)中,我该如何防止这种情况发生?
如果我没有在模板中过滤掉这些特定字段,这些特定字段将出现在所有日志中,所以我很困惑为什么只有少数而不是全部发生这种情况。
您需要将动态设置为严格。
"mappings": {
"_default_": {
"dynamic": "strict"
}
}
根据 documentation,
如果 elasticsearch 检测到一个新字段,它会默认将其添加到映射中。设置 "dynamic": false
关闭此设置,并且不会动态添加新字段。
post 也可能有帮助。
我在索引模板中禁用了动态字段:
{
"template": "logstash-mysexylogs*",
"order": 10,
"mappings": {
"_default_": {
"dynamic": false,
"_all": {
"enabled": false
},
现在当我在 Kibana 中查看我的日志时,我偶尔会看到:
这些字段未在模板中定义,因此它们根本不应该存在,但对于一些日志,我会看到它们,如屏幕截图所示。
为什么会发生这种情况并且只发生在少数(不是所有日志)中,我该如何防止这种情况发生?
如果我没有在模板中过滤掉这些特定字段,这些特定字段将出现在所有日志中,所以我很困惑为什么只有少数而不是全部发生这种情况。
您需要将动态设置为严格。
"mappings": {
"_default_": {
"dynamic": "strict"
}
}
根据 documentation,
如果 elasticsearch 检测到一个新字段,它会默认将其添加到映射中。设置 "dynamic": false
关闭此设置,并且不会动态添加新字段。