Templates elasticsearch动态模板不';“t匹配”;“深”;性质
我开始考虑为tweet创建一个特定的ES映射,但很快意识到tweet模型的ES映射随着时间的推移将成为一个需要维护的噩梦,所以我开始考虑动态模板。我已经根据twitter对象描述为每个可能的属性注册了一个动态模板。tweet是一种非常分层和冗余的格式,这意味着一个属性(比如“created_at”)可能存在于多个位置,因此维护稳定的显式映射是一场噩梦 在迄今为止我创建的映射中,我有无显式映射(“属性”-属性为空),因为我希望所有映射由动态模板控制。例如,“created_at”属性的动态模板如下所示:Templates elasticsearch动态模板不';“t匹配”;“深”;性质,templates,dynamic,
elasticsearch,mapping,Templates,Dynamic,
elasticsearch,Mapping,我开始考虑为tweet创建一个特定的ES映射,但很快意识到tweet模型的ES映射随着时间的推移将成为一个需要维护的噩梦,所以我开始考虑动态模板。我已经根据twitter对象描述为每个可能的属性注册了一个动态模板。tweet是一种非常分层和冗余的格式,这意味着一个属性(比如“created_at”)可能存在于多个位置,因此维护稳定的显式映射是一场噩梦 在迄今为止我创建的映射中,我有无显式映射(“属性”-属性为空),因为我希望所有映射由动态模板控制。例如,“created_at”属性的动态模板如下
{
"created_at": {
"match": "created_at",
"mapping": {
"format": "EEE MMM d HH:mm:ss Z YYYY",
"index": "no"
}
}
我认为拥有这个模板将负责“created_at”属性在json结构中的映射。我知道我可以指定“路径匹配”以明确指定给定属性实例,但我希望all根据上面的模板映射“created\u at”属性
但是,当我开始将数据索引到ES中时,会出现许多错误,如:
Caused by: org.elasticsearch.ElasticsearchIllegalArgumentException: unknown property [created_at]
at org.elasticsearch.index.mapper.core.StringFieldMapper.parseCreateFieldForString(StringFieldMapper.java:331)
at org.elasticsearch.index.mapper.core.StringFieldMapper.parseCreateField(StringFieldMapper.java:277)
at org.elasticsearch.index.mapper.core.AbstractFieldMapper.parse(AbstractFieldMapper.java:399)
... 13 more
我做错了什么?您可以尝试以下示例来设置动态模板:
curl -XPUT localhost:9200/_template/template_for_created_at -d '
{
"template": "*",
"mappings": {
"_default_": {
"dynamic": true,
"dynamic_templates": [
{
"created_at_tmpl": {
"match": "created_at",
"match_mapping_type": "date",
"mapping": {
"type": "date",
"format": "EEE MMM d HH:mm:ss Z YYYY",
"index": "no",
"null_value": null
}
}
}
]
}
}
}'
更多的细节和例子可以在这里找到:很抱歉,我没有将这个问题标记为“已解决”!!!!经过一些调查,我设法使它工作起来。谢谢你的建议 干杯您可以尝试将
匹配映射类型“*”
添加到在模板中创建的中,并查看其运行情况吗?