<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # Scroll 原文鏈接 : [https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-scroll.html](https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-scroll.html) 譯文鏈接 : [http://www.apache.wiki/pages/editpage.action?pageId=4883102](http://www.apache.wiki/pages/editpage.action?pageId=488308) 貢獻者 : [ping](/display/~wangyangting) 雖然搜索請求返回單個?“page”?的結果,但是滾動 API 可以用于從單個搜索請求中檢索大量結果(甚至是所有結果),與在傳統數據庫上使用游標的方式大致相同。 滾動不是用于實時用戶請求,而是用于處理大量數據,例如, 以便將一個索引的內容重新索引到具有不同配置的新索引中。 客戶端支持滾動和重建索引 一些官方支持的客戶端提供幫手以協助從一個索引到另一個索引的滾動搜索和重新索引文檔: Perl 請參見 Search :: Elasticsearch :: Bulk和Search :: Elasticsearch :: Scroll Python 請參見 elasticsearch.helpers。 Note: 從滾動請求返回的結果反映了進行初始搜索請求時索引的狀態,如時間快照。 對文檔(索引,更新或刪除)的后續更改只會影響以后的搜索請求。 為了使用滾動,初始搜索請求應該在查詢字符串中指定滾動參數,它告訴 Elasticsearch 應保持“搜索上下文”活動的時間(見保持搜索上下文),例如??scroll=1m。 ``` POST /twitter/tweet/_search?scroll=1m { "size": 100, "query": { "match" : { "title" : "elasticsearch" } } } ``` 上述請求的結果包括一個 _scroll_id,它應該被傳遞給滾動 API,以便檢索下一批結果。 ``` POST ①/_search/scroll ② { "scroll" : "1m", ③ "scroll_id" : "DXF1ZXJ5QW5kRmV0Y2gBAAAAAAAAAD4WYm9laVYtZndUQlNsdDcwakFMNjU1QQ==" ④ } ``` | ① | 可以使用GET或POST。 | | ② | 網址不應包含索引或類型名稱 - 而是在原始搜索請求中指定的。 | | ③ | scroll 參數告訴 Elasticsearch 將搜索上下文打開另一個1m。 | | ④ | scroll_id參數 | size 參數允許您配置每批結果返回的最大命中數。 每次調用 scroll API 都會返回下一批結果,直到沒有更多結果要返回,即 hits 數組為空。 Important: 初始搜索請求和每個后續滾動請求返回一個新的_scroll_id - 只應該使用最近的_scroll_id。 Note: 如果請求指定了聚合,則只有初始搜索響應將包含聚合結果。 Note: 滾動請求具有優化,使排序順序為_doc時更快。 如果你想迭代所有文檔,無論順序如何,這是最有效的選擇: ``` GET /_search?scroll=1m { "sort": [ "_doc" ] } ``` ### Keeping the search context alive 滾動參數(傳遞到搜索請求和每個滾動請求)告訴Elasticsearch應該保持搜索上下文活動的時間。其值(例如,1m,請參閱 “Time unit” 一節)不需要足夠長以處理所有數據 - 它只需要足夠長的時間來處理前一批結果。每個滾動請求(具有滾動參數)設置新的到期時間。 通常,后臺合并過程通過將較小的段合并在一起以創建新的較大段來優化索引,此時較小的段被刪除。此過程在滾動期間繼續,但是打開的搜索上下文防止舊段在它們仍在使用時被刪除。這就是Elasticsearch如何能夠返回初始搜索請求的結果,而不考慮對文檔的后續更改。 Tip: 保持較舊的段仍然活動意味著需要更多的文件句柄。確保您已將節點配置為具有足夠的可用文件句柄。請參閱 [File Descriptors](https://www.elastic.co/guide/en/elasticsearch/reference/current/file-descriptors.html "File Descriptors").。 您可以檢查使用 ?[nodes stats API](https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-nodes-stats.html "Nodes Stats")?打開的搜索上下文數量: ``` GET /_nodes/stats/indices/search ``` ### Clear scroll API 當超出滾動超時時,將自動刪除搜索上下文。 但是,保持滾動打開有一個成本,如前面部分所討論的,因此滾動應該明確清除,一旦滾動不再使用 clear-scroll API: ``` DELETE /_search/scroll { "scroll_id" : ["DXF1ZXJ5QW5kRmV0Y2gBAAAAAAAAAD4WYm9laVYtZndUQlNsdDcwakFMNjU1QQ =="] } ``` 多個滾動 ID 可以作為數組傳遞: ``` DELETE /_search/scroll { "scroll_id" : [ "DXF1ZXJ5QW5kRmV0Y2gBAAAAAAAAAD4WYm9laVYtZndUQlNsdDcwakFMNjU1QQ==", "DnF1ZXJ5VGhlbkZldGNoBQAAAAAAAAABFmtSWWRRWUJrU2o2ZExpSGJCVmQxYUEAAAAAAAAAAxZ rUllkUVlCa1NqNmRMaUhiQlZkMWFBAAAAAAAAAAIWa1JZZFFZQmtTajZkTGlIYkJWZDFhQQAAAAAAAAAFF mtSWWRRWUJrU2o2ZExpSGJCVmQxYUEAAAAAAAAABBZrUllkUVlCa1NqNmRMaUhiQlZkMWFB" ] } ``` 所有搜索上下文可以使用 _all 參數清除: ``` DELETE /_search/scroll/_all ``` scroll_id 也可以作為查詢字符串參數或在請求正文中傳遞。 多個滾動 ID 可以作為逗號分隔值傳遞: ``` DELETE /_search/scroll/DXF1ZXJ5QW5kRmV0Y2gBAAAAAAAAAD4WYm9laVYtZndUQlNsdDcwakFMNjU 1QQ==,DnF1ZXJ5VGhlbkZldGNoBQAAAAAAAAABFmtSWWRRWUJrU2o2ZExpSGJCVmQxYUEAAAAAAAAAAxZr UllkUVlCa1NqNmRMaUhiQlZkMWFBAAAAAAAAAAIWa1JZZFFZQmtTajZkTGlIYkJWZDFhQQAAAAAAAAAFFm tSWWRRWUJrU2o2ZExpSGJCVmQxYUEAAAAAAAAABBZrUllkUVlCa1NqNmRMaUhiQlZkMWFB ``` ### Sliced Scroll 對于返回大量文檔的滾動查詢,可以在能獨立使用的多個切片中拆分滾動: ``` GET /twitter/tweet/_search?scroll=1m { "slice": { "id": 0, ① "max": 2 ② }, "query": { "match" : { "title" : "elasticsearch" } } } GET /twitter/tweet/_search?scroll=1m { "slice": { "id": 1, "max": 2 }, "query": { "match" : { "title" : "elasticsearch" } } } ``` | ``` ① ``` | 切片 ID | | ``` ② ``` | 最大切片數 | 第一個請求的結果返回屬于第一個切片(id:0)的文檔,第二個請求的結果返回屬于第二個切片的文檔。 由于切片的最大數目被設置為2,所以兩個請求的結果的并集相當于沒有切片的滾動查詢的結果。 默認情況下,首先在分片上進行分割,然后使用帶有以下公式的_uid字段在每個分片上進行本地分割:slice(doc)= floorMod(hashCode(doc._uid),max)例如,如果分片數相等 到2,并且用戶請求4個片,則將片0和2分配給第一分片,并且將片1和3分配給第二分片。 每個滾動是獨立的,并且可以像任何滾動請求一樣被并行處理。 Note: 如果片的數量大于分片的數量,則片濾波器在第一次調用時非常慢,其具有O(N)的復雜度,并且存儲器成本等于每片N比特,其中N是文檔的總數 在碎片中。 在少數調用之后,過濾器應該被緩存,并且隨后的調用應當更快,但是應該限制并行執行的分片查詢的數量,以避免內存爆炸。 為了完全避免此成本,可以使用另一個字段的 doc_values 進行切片,但用戶必須確保該字段具有以下屬性: * The field is numeric. * 該字段是數字。 * 在該字段上啟用了 doc_values * Every document should contain a single value. If a document has multiple values for the specified field, the first value is used. * 每個文檔應包含單個值。 如果文檔具有指定字段的多個值,則使用第一個值。 * The value for each document should be set once when the document is created and never updated. This ensures that each slice gets deterministic results. * 在創建文檔并且從不更新時,應為每個文檔設置一次。 這確保每個切片獲得確定性結果。 * The cardinality of the field should be high. This ensures that each slice gets approximately the same amount of documents. * 字段的基數應該很高。 這確保每個切片獲得大致相同量的文檔。 ``` GET /twitter/tweet/_search?scroll=1m { "slice": { "field": "date", "id": 0, "max": 10 }, "query": { "match" : { "title" : "elasticsearch" } } } ``` 對于僅追加基于時間的索引,可以安全地使用時間戳字段。 Note: 默認情況下,每個滾動允許的最大切片數限制為 1024。您可以更新 index.max_slices_per_scroll 索引設置以繞過此限制。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看