1. 程式人生 > >Elasticsearch template學習

Elasticsearch template學習

body 集群 局限性 zed 統一 curl 分詞 設置 uri

https://www.cnblogs.com/forsaken627/articles/6512379.html

Elasticsearch template

Elasticsearch存在一個關鍵問題就是索引的設置及字段的屬性指定,最常見的問題就是,某個字段我們並不希望ES對其進行分詞,但如果使用自動模板創建索引,那麽默認是所有string類型的字段都會被分詞的,因此必須要顯式指定字段的not_analyzed屬性,其它的比如控制索引的備份數,分片數等,也可以通過模板的套用來實現,並且模板可以通過通配符進行模糊匹配,即可對滿足某一通配符的所有新建索引均套用統一模板,不需要為每個索引都建立模板。但也有一點局限性需要註意:模板在設置生效後,僅對ES集群中新建立的索引生效,而對已存在的索引及時索引名滿足模板的匹配規則,也不會生效,因此如果需要改變現有索引的mapping信息,仍需要在正確的mapping基礎上建立新的索引,並將數據從原索引拷貝至新索引,變更新索引別名為原索引這種方式來實現(改方法適用當前ES版本(1.7+~2.4+)),也許未來會有索引的直接遷移方案。

參考文章:

  • http://www.cnblogs.com/huangfox/p/3544883.html
  • https://www.elastic.co/guide/en/elasticsearch/reference/2.3/indices-templates.html
  • 相關api的使用

    • 創建
    • curl -XPUT localhost:9200/_template/template_1 -d
      {  
          "template" : "te*",
          "order":1  //就是 elasticsearch 在創建一個索引的時候,如果發現這個索引同時匹配上了多個 template ,那麽就會先應用 order 數值小的 template 設置,然後再應用一遍 order 數值高的作為覆蓋,最終達到一個 merge 的效果  
          "settings" : {  
              "number_of_shards" : 1  
          },  
          "mappings" : {  
              "type1" : {  
                  "_source" : {"enabled" : false }  
              }  
          }  
      }

Elasticsearch template學習