我希望弹性搜索中的字符串字段不会被默认分析,并将其应用于elasticsearch中的所有索引,而不进行任何索引级别配置。目前我必须为每个索引设置映射,indexType就像这样,
POST sellers/sellerDailyRecord/_mapping
{
"sellerDailyRecord" : {
"dynamic_templates" : [
{
"template1" : {
"match" : "*",
"match_mapping_type" : "string",
"mapping" : {
"type" : "string",
"index" : "not_analyzed"
}
}
}
]
}
}
我可以为所有indexType制作上述配置默认映射吗?我阅读了root对象的elasticsearch文档,但我无法弄清楚如何做到这一点。任何人都可以帮我解决这个问题吗?感谢
答案 0 :(得分:1)
您可以在创建索引时执行此操作,以便它适用于在索引中创建的所有类型
curl -XPUT "http://localhost:9200/t1" -d'
{
"mappings": {
"_default_": {
"dynamic_templates": [
{
"string_template": {
"match": "*",
"match_mapping_type": "string",
"mapping": {
"type": "string",
"index" :"not_analyzed"
}
}
}
]
}
}
}'
希望这会有所帮助!!
答案 1 :(得分:0)
我找到了一种使用索引模板更好的方法。这解决了我的问题,我不必为每个索引执行此操作:
PUT _template/not_analyzed_template
{
"template": "*",
"mappings": {
"_default_": {
"dynamic_templates": [
{
"template_1": {
"mapping": {
"index": "not_analyzed",
"type": "string"
},
"match_mapping_type": "string",
"match": "*"
}
}
]
}
}
}