ElasticSearch 學習小筆記

object數據類型

除了一些基本數據類型以外,要注意有一個object類型,即和json的數據類型。
大部分複雜的數據類型,都是以這個形式存在的


querry和filter的區別

都是刪選數據,最明顯的區別就是前者計算分數,而後者不進行計算。
我們要知道,在es進行查詢的時候,他會根據相關度(匹配程度)進行一個展示的排序,而這部分的算法會消耗很大的一部分資源和速度。
由此,我們可以得出一個優化查詢效率的辦法,就是儘量做過濾先,然後查詢,如果順序不重要,可以對查詢進行分數不計算的設置,這樣可以大大加快查詢效率。(查詢的時候加"constant_score"不計算分數)

GET /company/employee/_search 
{
  "query": {
    "constant_score": {
      "filter": {
        "range": {
          "age": {
            "gte": 30
          }
        }
      }
    }
  }
}


bool查詢的相關度計算

很多時候我們會發現,bool查詢出來的結果會與我們想要的結果的大相徑庭,這是因爲bool查詢的相關度算法的問題。
bool一般是由mustmust_notshouldfilter這些子查詢組成
每個子查詢都會計算一個document針對它的相關度分數,然後bool綜合所有分數,合併爲一個分數,當然filter是不會計算分數的

match query的再次學習

  • 全文檢索的時候,進行多個值的檢索,有兩種做法,match query;should
  • match query 底層會自動轉化成bool查詢
  • 控制搜索結果精準度:and operator,minimum_should_match
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章