es中filter與query的區別

2021-10-05 23:47:53 字數 943 閱讀 9978

filter與query的區別

filter —— 只根據搜尋條件過濾出符合的文件, 將這些文件的評分固定為1, 忽略tf/idf資訊, 不計算相關度分數;

query —— 先查詢符合搜尋條件的文件, 然後計算每個文件對於搜尋條件的相關度分數, 再根據評分倒序排序.

什麼時候使用?

如果對搜尋結果有排序的要求, 要將最匹配的文件排在最前面, 就用query;

如果只是根據一定的條件篩選出部分資料, 不關注結果的排序, 就用filter.

效能上的對比

filter 效能更好, 無排序 —— 不計算相關度分數, 不用根據相關度分數進行排序, 同時es內部還會快取(cache)比較常用的filter的資料 (使用bitset <0或1> 來記錄包含與否).

query 效能較差, 有排序 —— 要計算相關度分數, 要根據相關度分數進行排序, 並且沒有cache功能.

測試資料

put website/_doc/1

}put website/_doc/2

}

query

get website/_doc/_search

}, }}

]}}}

// 結果資訊:

"hits":}

}]}

使用filter

get website/_doc/_search

}, "filter":}

}}}}

// 結果資訊:

"hits":}

}]}

原則上來說,使用查詢語句做全文本搜尋或其他需要進行相關性評分的時候,剩下的全部用過濾語句。

十九 filter與query對比

1.filter與query示例 首先存入兩個document put company employee 2 name tom age 30,join date 2016 01 01 put company employee 3 name marry age 35,join date 2015 01...

vue router中query與params區別

query和params兩者都是在vue路由中傳參 用法 query用path來引入,params只能用name來傳遞,不能使用path 傳參 this router.push 接收引數 this route.query.id傳參是this.rou ter,接收引數 是thi s.router,接收...

ES中filter 和map的使用

用於過濾乙個陣列 不操作當前陣列,返回乙個新陣列,裡返回true的元素。let array 1,2,3,4,5 filter function item console.log array 結果 3,4,5 不操作當前陣列,返回乙個新陣列,裡返回什麼,這一項就是什麼。let array2 2,3,4...