Elasticsearch核心技術與實戰學習筆記 42 | 排序及Doc Values&Fielddata

一 序

  本文屬於極客時間Elasticsearch核心技術與實戰學習筆記系列。

二 排序    

  • ES 默認採用相關性算分對結果進行降序排序
  • 可以通過設置 sorting 參數,自行設定排序
  • 如果不指定_score, 算分爲 null

指定order_date 排序,所以打分是null.

2.1 多字段進行排序

  • 組合多個條件
  • 優先考慮寫在前面的排序
  • 支持對相關性算分進行排序

因爲是全部查詢,所以算分都是1.

2.2 對 Text 類型排序

對Text字段進行排序,默認會報錯。  

  #打開 text的 fielddata

再次執行查詢: 

3 排序的過程

排序是針對字段原始內容進行的。倒排索引無法發揮作用
需要用到正排索引。通過文檔 ID 和字段快速得到字段原始內容
ES 有 2 種實現方式

  • Fieldata
  • Doc Values (列式存儲,對 Text 類型無效)

就是上面的例子,text 需要打開fielddata.

3.1 Doc Values vs. Field Data

  

  • fileddata默認關閉,可以通過 Mapping 設置打開。修改設置後,即時生效,無需縮減索引
  • 其他字段類型不支持,支持對 Text 進行設定

上面的例子中,我們可以動態的打開fileddata,但是實際情況下不建議打開,對全文本排序沒有很大的意義。

3.2 關閉 Doc Values   

  • 默認啓動,可以通過 Mapping 設置關閉
    • 增減索引速度 / 減少磁盤空間
  • 如果重新打開,需要重建索引
  • 什麼時候需要關閉
    • 明確不需要做排序及聚合分析

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章