Elasticsearch默认应用映射

时间:2014-07-25 13:48:37

标签: elasticsearch

我希望弹性搜索中的字符串字段不会被默认分析,并将其应用于elasticsearch中的所有索引,而不进行任何索引级别配置。目前我必须为每个索引设置映射,indexType就像这样,

POST sellers/sellerDailyRecord/_mapping
{
"sellerDailyRecord" : {
    "dynamic_templates" : [
        {
            "template1" : {
                "match" : "*",
                "match_mapping_type" : "string",
                "mapping" : {
                    "type" : "string",
                    "index" : "not_analyzed"
                }
            }
        }
    ]
}
}

我可以为所有indexType制作上述配置默认映射吗?我阅读了root对象的elasticsearch文档,但我无法弄清楚如何做到这一点。任何人都可以帮我解决这个问题吗?感谢

2 个答案:

答案 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": "*"
                    }
                }
            ]
        }
    }
}