Logstash保持,尽管被停用
问题描述:
我定义我自己的模板,通过logstash在那里我有禁用动态映射使用的dynamic_mapping创建领域:Logstash保持,尽管被停用
{
"my_index": {
"order": 0,
"template": "my_index",
"settings": {
"index": {
"mapper": {
"dynamic": "false"
},
"analysis": {
"analyzer": {
"nlp_analyzer": {
"filter": [
"lowercase"
],
"type": "custom",
"tokenizer": "nlp_tokenizer"
}
},
"tokenizer": {
"nlp_tokenizer": {
"pattern": ""
"(\w+)|(\s*[\s+])"
"",
"type": "pattern"
}
}
},
"number_of_shards": "1",
"number_of_replicas": "0"
}
},
"mappings": {
"author": {
"properties": {
"author_name": {
"type": "keyword"
},
"author_pseudo": {
"type": "keyword"
},
"author_location": {
"type": "text",
"fields": {
"standard": {
"analyzer": "standard",
"term_vector": "yes",
"type": "text"
},
"nlp": {
"analyzer": "nlp_analyzer",
"term_vector": "yes",
"type": "text"
}
}
}
}
}
}
}
}
为了测试是否elasticsearch不会产生新的领域我尝试让我在事件现场是不存在于我的映射,让我们说,我有这样的事件:
:{
“type” => “author”,
“author_pseudo” => “chloemdelorenzo”,
“author_name” => “Chloe DeLorenzo”,
“author_location” => “US”,
}
Elasticsearch将在映射索引此事件时,产生一个新的领域
"type": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
我知道,因为在我的映射我使用一个自定义的分析,我可以找到它放回产生的映射是Logstash使用我的模板。但显然它没有考虑到动态字段被禁用。
我想elasticsearch忽略不存在在我的映射,但以指数有定义的映射场域。我如何避免logstash创建新的字段?
答
你应该强制在文档类型级别的映射。无论此设置的值的
https://www.elastic.co/guide/en/elasticsearch/reference/current/dynamic-mapping.html
,类型仍然可以创建索引或与PUT映射API明确当加入 。
所以,你的映射会是这样的:
"mappings": {
"author": {
"dynamic": false,
"properties": {
"author_name": {
"type": "keyword"
},
"author_pseudo": {
"type": "keyword"
},
"author_location": {
"type": "text",
"fields": {
"standard": {
"analyzer": "standard",
"term_vector": "yes",
"type": "text"
},
"nlp": {
"analyzer": "nlp_analyzer",
"term_vector": "yes",
"type": "text"
}
}
}
}
}
}
答
这个答案是不正是您所要求的,但你可以手动删除字段与logstash过滤器是这样的:
filter {
mutate {
remove_field => ["fieldname"]
}
}
如果您的活动有一个定义的字段列表,你可以解决你的问题,这办法。
是的,我知道,但我可以有很多意想不到的领域透进来的所以这是一个解决方案,我买不起 – mel
怎么样'prune'过滤器?它允许您将好域名列入白名单而不是将其列入黑名单。检查https://www.elastic.co/guide/en/logstash/current/plugins-filters-prune.html – whites11
我想我找到了一个解决方案,而不使用其他插件。我强制执行文档类型级别的动态映射: “...”作者“:{动}”:“false” – mel