elk之查詢方式(4種)


es 在查詢時, 可以指定搜索類型為下面四種:
  QUERY_THEN_FETCH
  QUERY_AND_FEATCH
  DFS_QUERY_THEN_FEATCH

  DFS_QUERY_AND_FEATCH

 

1、 query and fetch
  向索引的所有分片 ( shard)都發出查詢請求, 各分片返回的時候把元素文檔 ( document)和計算后的排名信息一起返回。
  這種搜索方式是最快的。 因為相比下面的幾種搜索方式, 這種查詢方法只需要去 shard查詢一次。 但是各個 shard 返回的結果的數量之和可能是用戶要求的 size 的 n 倍。
  優點:這種搜索方式是最快的。因為相比后面的幾種es的搜索方式,這種查詢方法只需要去shard查詢一次。
  缺點:返回的數據量不准確, 可能返回(N*分片數量)的數據並且數據排名也不准確,同時各個shard返回的結果的數量之和可能是用戶要求的size的n倍。
   

2、 query then fetch( es 默認的搜索方式)
  如果你搜索時, 沒有指定搜索方式, 就是使用的這種搜索方式。 這種搜索方式, 大概分兩個步驟:
  第一步, 先向所有的 shard 發出請求, 各分片只返回文檔 id(注意, 不包括文檔 document)和排名相關的信息(也就是文檔對應的分值), 然后按照各分片返回的文檔的分數進行重新排序和排名, 取前 size 個文檔。
  第二步, 根據文檔 id 去相關的 shard 取 document。 這種方式返回的 document 數量與用戶要求的大小是相等的。
  優點:
    返回的數據量是准確的。
  缺點:
    性能一般,並且數據排名不准確。

 

3、 DFS query and fetch
  這種方式比第一種方式多了一個 DFS 步驟,有這一步,可以更精確控制搜索打分和排名。也就是在進行查詢之前, 先對所有分片發送請求, 把所有分片中的詞頻和文檔頻率等打分依據全部匯總到一塊, 再執行后面的操作、
  優點:
    數據排名准確
  缺點:
    性能一般
    返回的數據量不准確, 可能返回(N*分片數量)的數據

 

4、 DFS query then fetch
  比第 2 種方式多了一個 DFS 步驟。
  也就是在進行查詢之前, 先對所有分片發送請求, 把所有分片中的詞頻和文檔頻率等打分依據全部匯總到一塊, 再執行后面的操作、

  優點:
    返回的數據量是准確的
    數據排名准確
  缺點:
    性能最差【 這個最差只是表示在這四種查詢方式中性能最慢, 也不至於不能忍受,如果對查詢性能要求不是非常高, 而對查詢准確度要求比較高的時候可以考慮這個】

總結:每種方式的時間

QUERY_AND_FETCH
0-1534820294505
1-1534820294541

 


QUERY_THEN_FETCH

0-1534820356610
1-1534820356641

 

 

DFS_QUERY_THEN_FETCH
0-1534820407588
1-1534820407621

 

DEFAULT
0-1534820503041
1-1534820503071


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM