避免从logstash创建双映射

时间:2018-01-24 16:21:27

标签: elasticsearch logstash

我注意到logstash会创建一个额外的"关键字"索引映射中的字段,用于从日志文件中提取的每个字符串字段,并发送到弹性搜索。

我已经使用prune plugin完全删除了许多字段,但还有其他字段我不想完全删除,但我也不需要他们有一个* .keyword。

有没有办法让logstash只为某些字段而不是其他字段创建* .keyword字段?具体来说,是否有一种方法可以让logstash拥有一个字段白名单,可以为其创建* .keywords,而不是为其他任何内容创建?

(使用elasticsearch 6.x)

2 个答案:

答案 0 :(得分:0)

我认为您需要更改所需字段的映射。映射页面显示默认文本类型映射:

  

https://www.elastic.co/guide/en/elasticsearch/reference/5.5/breaking_50_mapping_changes.html

我尝试设置一个没有关键字字段的字段,除非您无法在该字段上进行聚合(我尝试了术语聚合),即使您在映射中设置了index:true也是如此。我可能错过了一些东西,但我认为这是你应该开始的地方。

答案 1 :(得分:0)

我现在使用的解决方案是dynamic templates。 我可以将一些字段映射到文本,将其他字段映射到文本和关键字。例如:

{
    "mappings": {
        "doc": {
            "dynamic_templates": [
                                {
                    "match_my_custom_fields": {
                        "match_mapping_type": "string",
                        "match": "custom_prefix_*",
                        "mapping": {
                            "type": "text",
                            "fields": {
                                "raw": {
                                    "type": "keyword",
                                    "ignore_above": 256
                                }
                            }
                        }
                    }
                },
                {
                    "strings_as_keywords": {
                        "match_mapping_type": "string",
                        "mapping": {
                            "type": "keyword",
                            "ignore_above": 256
                        }
                    }
                }
            ],
            "properties": {
              "geoip": {
                "dynamic": true,
                "properties": {
                    "ip": {
                        "type": "ip"
                    },
                    "location": {
                        "type": "geo_point"
                    },
                    "latitude": {
                        "type": "half_float"
                    },
                    "longitude": {
                        "type": "half_float"
                    }
                }
            }
        }
    }
}

这样,以custom_prefix_开头的所有内容都会包含文字和关键字字段,其他所有内容都只会包含关键字。

当然,我以某种方式打破了geoip.geo_point logstash插件发出的geoip,现在我的地图可视化工作无法正常工作,所以我需要弄清楚如何恢复这一点。

编辑:让geo_point再次运行,请参阅" geoip"丙