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