<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之旅 廣告
                #動態索引 下一個需要解決的問題是如何在保持不可變好處的同時更新倒排索引。答案是,使用多個索引。 不是重寫整個倒排索引,而是增加額外的索引反映最近的變化。每個倒排索引都可以按順序查詢,從最老的開始,最后把結果聚合。 Elasticsearch底層依賴的Lucene,引入了`per-segment search`的概念。一個段(segment)是有完整功能的倒排索引,但是現在Lucene中的索引指的是段的集合,再加上提交點(commit point,包括所有段的文件),如**圖1**所示。新的文檔,在被寫入磁盤的段之前,首先寫入內存區的索引緩存,如**圖2、圖3**所示。 **圖1:一個提交點和三個索引的Lucene** ![一個提交點和三個索引的Lucene](https://www.elastic.co/guide/en/elasticsearch/guide/current/images/elas_1101.png) >索引vs分片 >為了避免混淆,需要說明,Lucene索引是Elasticsearch中的分片,Elasticsearch中的索引是分片的集合。當Elasticsearch搜索索引時,它發送查詢請求給該索引下的所有分片,然后過濾這些結果,聚合成全局的結果。 一個`per-segment search`如下工作: 1. 新的文檔首先寫入內存區的索引緩存。 2. 不時,這些buffer被提交: * 一個新的段——額外的倒排索引——寫入磁盤。 * 新的提交點寫入磁盤,包括新段的名稱。 * 磁盤是fsync’ed(文件同步)——所有寫操作等待文件系統緩存同步到磁盤,確保它們可以被物理寫入。 3. 新段被打開,它包含的文檔可以被檢索 4. 內存的緩存被清除,等待接受新的文檔。 **圖2:內存緩存區有即將提交文檔的Lucene索引** ![內存緩存區有即將提交文檔的Lucene索引](https://www.elastic.co/guide/en/elasticsearch/guide/current/images/elas_1102.png) **圖3:提交后,新的段加到了提交點,緩存被清空** ![提交后,新的段加到了提交點,緩存被清空](https://www.elastic.co/guide/en/elasticsearch/guide/current/images/elas_1103.png) 當一個請求被接受,所有段依次查詢。所有段上的Term統計信息被聚合,確保每個term和文檔的相關性被正確計算。通過這種方式,新的文檔以較小的代價加入索引。 ##刪除和更新 段是不可變的,所以文檔既不能從舊的段中移除,舊的段也不能更新以反映文檔最新的版本。相反,每一個提交點包括一個.del文件,包含了段上已經被刪除的文檔。 當一個文檔被刪除,它實際上只是在.del文件中被標記為刪除,依然可以匹配查詢,但是最終返回之前會被從結果中刪除。 文檔的更新操作是類似的:當一個文檔被更新,舊版本的文檔被標記為刪除,新版本的文檔在新的段中索引。也許該文檔的不同版本都會匹配一個查詢,但是更老版本會從結果中刪除。 在[合并段](075_Inside_a_shard/60_Segment_merging.md)這節,我們會展示刪除的文件是如何從文件系統中清除的。
                  <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>

                              哎呀哎呀视频在线观看