ElasticSearch:如何将默认映射设置为模板

ElasticSearch: How to set a default mapping to a template

我是 运行 ElasticSearch 版本 1.4

我想创建一个名为的模板:

listener*

具有以下映射:

每个字符串字段将被定义为not_analyzed.

含义 analyzer:not_analyzed

这样做的主要原因是我打算按原样保存数据。 (例如个人 ID)

这可以做到,但只有当我在其确切的 JSon 结构中明确指定该字段时。

如果您的 JSON 结构很大,则很难维护。

有什么方法可以指定每个 string 字段都是 not_analyzed 的映射吗?

这应该可以做到。在你 运行 它之后,你必须删除并重建你的索引,但它适用于所有新索引。

PUT _template/not_analyzed_template
{
    "template": "*", 
    "mappings": {
        "_default_": {
            "dynamic_templates": [
                {
                    "template_1": {
                        "mapping": {
                            "index": "not_analyzed",
                            "type": "string"
                        },
                        "match_mapping_type": "string",
                        "match": "*"
                    }
                }
            ]
        }
    }
}

这是我用来测试它的一些玩具代码:

http://sense.qbox.io/gist/398aab275d48a7a2aac6ba725d5691e1e159496c