ES添加字段

背景

Elasticsearch 是schema-less的數據存儲方案。能夠任意的向索引中添加字段。在此需明確如下背景:app

  1. ES新添加的字段只對新數據、新type起做用;原有已經索引的數據不會生效;
  2. 爲加快ES的檢索和索引效率,構建索引時會指定其mapping結構;添加索引字段即修改mapping;
  3. 目前咱們採用兩種索引方案:
    1. 指定動態模板,天天生成新索引;
    2. 單索引多type:指定_default_mapping, 其天天的type主動繼承mapping定義。

 

添加字段方案

針對A

該方案比較簡單:只需在dynamic template中的mapping中添加新的字段便可;新生成的索引自動應用。刷數時,清理掉舊索引,建立新索引。less

針對B

在_default_  mapping中添加字段定義。每日新生成的type會自動應用該字段。elasticsearch

刷數比較麻煩:1. 清理原有數據;使用 _delete_by_query;2. 使全部的type應用新添加的字段,使用spa

update_all_types, 以下圖所示

PUT /my_index/_mapping/my_type?update_all_typescode

  {繼承

    "properties": {索引

      "title": {ci

        "type": "string",string

        "analyzer": "english"it

      }

    }

  }

 

參考:https://stackoverflow.com/questions/36135937/set-update-all-types-to-true-on-elasticsearch

相關文章
相關標籤/搜索