ElasticSearch學習之數據建模

Update By Query

_update_by_query
適用場景:索引mappings有更新,通過使用_update_by_query可以查詢到mappings更新之前的文檔。

POST /blogs/_update_by_query
{
}

reindex

ES不允許對已有的索引mappings進行更改,可以重新創建一個索引
然後用reindex操作將原有的索引數據導入都新的索引中。reindex可以將一個索引拷貝到另一個索引中。

POST  _reindex
{
  "source": {
    "index": "blogs"
  },
  "dest": {
    "index": "blogs_fix",
    "version_type": "internal"
  }
}

數據建模

數據建模就是創建數據模型的過程
過程:
字段類型–>是否要搜索分詞–>是否要聚合及排序–>是否要額外存儲
字段類型

  • text
    • 用於全文本字段,文本不會被Analyzer分詞
    • 默認不支持聚合和排序,需要將fielddata設置爲true
  • keyword
    • 用於ID,枚舉及不需要分詞的文本
    • 適用於Filter精確匹配,Sorting和Aggregations
  • 設置多字段類型
    • 默認會爲文本類型設置成text,並且設置一個keyword的子字段
    • 在處理人類語言時,通過增加英文,拼音和標準分詞器,提高搜索結構

檢索

  • 如不需要檢索,排序和聚合分析
    • Enable設置成false
  • 如不需要檢索
    • index設置fasle

排序和聚合

  • 如不需要檢索,排序和聚合分析
    • Enable設置成false
  • 如不需要排序或者聚合分析功能
    • doc_values/fielddata設置成false
  • 更新頻繁,聚合查詢頻繁的keyword類型的字段
    • 推薦將eager_global_ordinals設置爲true,利用緩存

額外的存儲

  • 是否需要專門存儲當前字段數據
    • store設置成true,可以存儲該字段的原始內容
    • 一般結合_source的enable爲false時候使用
  • Disable_source:節約磁盤,適用於指標型數據
    • 建議先考慮增加壓縮比
    • 無法看到_source字段,無法做reindex,無法做update

建模建議

  • 避免過多字段,默認最大字段數是1000
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章