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
我是 运行 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