Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
<img src="//i.stack.imgur.com/RUiNP.png" height="16" width="18" alt="" class="sponsor tag img">elasticsearch 为什么我的索引模板中没有定义这些字段,而elasticsearch却使用了这些字段?_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Logstash_Elastic Stack - Fatal编程技术网 elasticsearch 为什么我的索引模板中没有定义这些字段,而elasticsearch却使用了这些字段?,elasticsearch,logstash,elastic-stack,elasticsearch,Logstash,Elastic Stack" /> elasticsearch 为什么我的索引模板中没有定义这些字段,而elasticsearch却使用了这些字段?,elasticsearch,logstash,elastic-stack,elasticsearch,Logstash,Elastic Stack" />

elasticsearch 为什么我的索引模板中没有定义这些字段,而elasticsearch却使用了这些字段?

elasticsearch 为什么我的索引模板中没有定义这些字段,而elasticsearch却使用了这些字段?,elasticsearch,logstash,elastic-stack,elasticsearch,Logstash,Elastic Stack,我禁用了索引模板中的动态字段: { "template": "logstash-mysexylogs*", "order": 10, "mappings": { "_default_": { "dynamic": false, "_all": { "enabled": false }, 现在,当我在Kibana查看我的日志时,我偶尔会看到: 这些字段没有在模板中定义,因此它们根本不应该存在,但对于一些日志,我将看到它们,

我禁用了索引模板中的动态字段:

{
  "template": "logstash-mysexylogs*",
  "order": 10,
  "mappings": {
    "_default_": {
      "dynamic": false,
      "_all": {
        "enabled": false
      },
现在,当我在Kibana查看我的日志时,我偶尔会看到:

这些字段没有在模板中定义,因此它们根本不应该存在,但对于一些日志,我将看到它们,如屏幕截图所示

为什么会发生这种情况,并且只发生在少数日志中(不是所有日志),我如何防止这种情况发生


如果我没有在模板中过滤掉这些字段,那么所有日志中都会出现这些特定字段,因此我不明白为什么只有很少几个字段会出现这种情况,而不是所有字段都会出现这种情况。

您需要将dynamic设置为strict

"mappings": { 
  "_default_": { 
    "dynamic": "strict" 
  } 
}
根据, 如果elasticsearch检测到新字段,默认情况下会将其添加到映射中。设置
“dynamic”:false将关闭此设置,并且不会动态添加新字段


post也可能有帮助。

您需要将dynamic设置为strict

"mappings": { 
  "_default_": { 
    "dynamic": "strict" 
  } 
}
根据, 如果elasticsearch检测到新字段,默认情况下会将其添加到映射中。设置
“dynamic”:false将关闭此设置,并且不会动态添加新字段


post也可能会有帮助。

由于弹性搜索是无模式的,它将尝试按照提供的方式对整个文档进行索引。黄色标记表示该字段(在您的情况下为userAgent_patch、userAgent_minor等)没有正确的映射(保留为noot_)。所以你可以做两件事:1。要删除此符号,请更新索引模式的映射。2.看看为什么这些字段被提供给elasticsearch(在发送给elasticsearch之前删除它们)。您可以使用mutate logstash插件来添加或删除字段。使用rest命令查看索引到Elasticsearch的映射,而不是从Kibana。如果你能在这里提供完整的映射,你需要将dynamic设置为strict<代码>“映射”:{“默认值”:{“动态”:“严格”}
可能会有帮助。您可以发布这样的消息,因为answerAs elasticsearch是无模式的,它将尝试按照提供给它的方式索引整个文档。黄色标记表示该字段(在您的情况下为userAgent_patch、userAgent_minor等)没有正确的映射(保留为noot_)。所以你可以做两件事:1。要删除此符号,请更新索引模式的映射。2.看看为什么这些字段被提供给elasticsearch(在发送给elasticsearch之前删除它们)。您可以使用mutate logstash插件来添加或删除字段。使用rest命令查看索引到Elasticsearch的映射,而不是从Kibana。如果你能在这里提供完整的映射,你需要将dynamic设置为strict<代码>“映射”:{“\u默认值”:{“动态”:“严格”}}
可能会有所帮助。您可以将其作为答案发布日志堆栈的行为是否有所不同?我使用logstash将模板应用于索引。当我设置这个日志时,我刚刚开始删除模板中没有定义字段的所有文档。我不希望我只是希望它不添加这些字段。如果模板设置为strict,并且传递的字段未在模板中定义,elasticsearch将抛出400错误,并且无法创建文档。您可以在日志存储日志中看到错误。您可以选择不同的输入数据,即显式选择,也可以使用mutate过滤器删除字段<代码>过滤器{mutate{remove_field=>['redired_field','redired_tag']}啊,好吧,这就是我不确定的地方。如果可以避免的话,我想避免显式地做突变或其他事情,但我想这是不可能的。为什么它必须拒绝整个文档而不是不添加这些字段?Elasticsearch可能会假设,如果映射是严格的,那么您知道数据是什么样子的,并且您不希望传入任何坏数据。从:“
strict
如果检测到新字段,将引发异常并拒绝文档”日志存储的行为是否有所不同?我使用logstash将模板应用于索引。当我设置这个日志时,我刚刚开始删除模板中没有定义字段的所有文档。我不希望我只是希望它不添加这些字段。如果模板设置为strict,并且传递的字段未在模板中定义,elasticsearch将抛出400错误,并且无法创建文档。您可以在日志存储日志中看到错误。您可以选择不同的输入数据,即显式选择,也可以使用mutate过滤器删除字段
filter{mutate{remove\u field=>['needed\u field','unned\u标记']}}}
Ah ok,这是我不确定的。如果可以避免的话,我想避免显式地做突变或其他事情,但我想这是不可能的。为什么它必须拒绝整个文档而不是不添加这些字段?Elasticsearch可能会假设,如果映射是严格的,那么您知道数据是什么样子的,并且您不希望传入任何坏数据。从:“
strict
如果检测到新字段,将引发异常并拒绝文档”