日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Elasticsearch filter和query的不同

發布時間:2024/1/17 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Elasticsearch filter和query的不同 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、query和filter的本質區別?

以下幾張圖能更好的概括:?

query關注點:此文檔與此查詢子句的匹配程度如何?

filter關注點:此文檔和查詢子句匹配嗎?

2、Query檢索細化關注點

1)是否包含?

確定文檔是否應該成為結果的一部分.

2)相關度得分多少?

除了確定文檔是否匹配外,查詢子句還計算了表示文檔與其他文檔相比匹配程度的_score。

3)得分越高,相關度越高。

更相關的文件,在搜索排名更高。

典型應用場景:

1)全文檢索——這種相關性的概念非常適合全文搜索,因為很少有完全“正確”的答案。

舉例如下:

文檔中存在字段hotel_name:“上海浦東香格里拉酒店”

IK實際分詞結果如下:?
上海浦東,上海,浦東,香格里拉,格里,里拉,酒店。

也就是說,搜索以上關鍵詞都能搜到:hotel_name:“上海浦東香格里拉酒店”的酒店。這些都是“相關”的。

但是搜索:“香格里” 是搜索不到結果的。

2)包含單詞“run”, 但也匹配”runs”, “running”, “jog”或者”sprint”。(都是奔跑的意思)

3、filter過濾細化關注點


1)是否包含?

確定是否包含在檢索結果中,回答只有“是”或“否”。

2)不涉及評分。

在搜索中沒有額外的相關度排名。

3)針對結構化數據。

適用于完全精確匹配,范圍檢索。

參見官網舉例:?
以下場景適用于filter過濾檢索:

舉例1:時間戳timestamp 是否在2015至2016年范圍內?

舉例2:狀態字段status 是否設置為“published”?

4)更快

只確定是否包括結果中,不需要考慮得分。

為什么會更快?——經常使用的過濾器將被Elasticsearch自動緩存,以提高性能。

4、query和filter的性能不同

過濾查詢(filter)是對集合包含/排除的簡單檢查,這使得它們計算速度非常快。 當至少有一個過濾查詢是“稀疏”(僅有少量匹配的文檔)時,可以利用各種優化,并且可以將緩存經常使用的filter過濾查詢緩存在內存中以加快訪問速度。

對比之下,query檢索(評分查詢)不僅要查找匹配的文檔,還要計算每個文檔的相關程度,這通常會使其比非評分文檔更復雜。 另外,查詢結果不可緩存

由于倒排索引,只有幾個文檔匹配的簡單評分查詢(query檢索)可能會比跨越數百萬個文檔的過濾器(filter過濾)表現得更好。 但是,一般來說,fiter過濾的性能將勝過評分查詢(query檢索)。

過濾(filter)的目標是減少必須由評分查詢(query)檢查的文檔數量。

5、filter過濾怎么緩存呢?

Elasticsearch將創建一個文檔匹配過濾器的位集bitset(如果文檔匹配則為1,否則為0)。 隨后用相同的過濾器執行查詢將重用此信息。

每當添加或更新新文檔時,位集bitset也會更新。

6、使用場景

  • 全文檢索以及任何使用相關性評分的場景使用query檢索。

  • 除此之外的其他使用filter過濾器過濾。

7、query和filter實戰

ebay在Elasticsearch使用經驗中總結到:

Use filter context instead of query context if possible.

即:如果可能,請使用filter過濾器上下文而不是query查詢上下文

查詢query和過濾器filter已合并(在ES1.X版本是分開的,存在filtered檢索類型)。

ES高版本(2.X/5.X/6.x以后),任何查詢子句都可以在“查詢上下文query”中用作查詢,并在“過濾器上下文filter”中用作過濾器。

舉例:

GET /_search {"query": { "bool": { "must": [{ "match": { "title": "Search" }}, { "match": { "content": "Elasticsearch" }} ],"filter": [ { "term": { "status": "published" }}, { "range": { "publish_date": { "gte": "2015-01-01" }}} ]}} }

8、小結

官網&源碼才是王道。

多看、多思、多總結。弄清原理,高效開發才有了保障!

參考:

1、官網:

http://t.cn/R14moYO

http://t.cn/R14kLl6

2、實戰:

http://t.cn/R1bZwy8

http://t.cn/RQhzDiP

3、Google工程師視頻

總結

以上是生活随笔為你收集整理的Elasticsearch filter和query的不同的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。