<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>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # fielddata(字段數據) 所有字段是默認被?[**indexed**](https://www.elastic.co/guide/en/elasticsearch/reference/5.3/mapping-index.html)(被索引的),這使得它們是可搜索的.可以在腳本中排序,聚合和獲取字段值,但是需要不同的搜索模式. 搜索需要回答一個問題 “哪個?**document(文檔)**?包含這個?**term**(詞條)”,然而排序和聚合需要回答一個不同的問題 " 這個字段在這個?**document**(文檔)中的值是多少?". 許多字段可以使用?**index-time**,在磁盤上的?**doc_values**?支持這種數據訪問模式, 但是?**text**?字段不支持?**doc_values**。 相反,**text**?字段使用查詢時存在于內存的數據結構?**fielddata**.這個數據結構是第一次將字段用于聚合,排序,或者腳本時基于需求構建的。它是通過讀取磁盤上的每個?**segment**(片段)的整個反向索引來構建的,將?**term**(詞條)和?**document**(文檔)關系反轉,并將結果存儲在內存中,在**JVM**的堆中. ## text 字段默認關閉 Fielddata? **Fielddata**?會消耗很多堆空間,尤其是加載高基數的?**text**?字段的時候.一旦**fielddata?**加載到堆中,它在 ?**segment**(片段)中的生命周期還是存在的.此外,加載 ?**fielddata**?是一件非常昂貴的過程,會導致用戶體驗到延遲的感覺.這就是為什么**fielddata?**默認關閉. 如果你嘗試對文本字段上的腳本進行排序,訪問值,你會看到此異常: * **Field data?**在?**text**?字段上默認是關閉的.在**?[your_field_name]?**上設置**fielddata = true**,以便通過反轉反向索引來加載內存中的?**fielddata**。 請注意,這可能會使用顯著的內存。 ## 在開啟fielddata之前 在你開啟?**fielddata?**?之前,考慮一下為什么你要在腳本中使用 ?**text?**來聚合,排序.通常這么做是沒有意義的. 在索引之前分析?**text**?字段,以至于像?**New York?**這樣的值可以通過?**new**?或者 ?**york**?來搜索.當你可能想要一個稱作 ?**New York?**?的單一bucket(桶),?**term**(詞條)在這個字段上聚合會返回一個?**new**?**bucket**和一個?**york**?**bucket**(桶). 相反,你應該使用?**text**?字段進行全文搜索,以及一個開啟?**doc_values**?的**unanalyzed**(未分析)?**[keyword](https://www.elastic.co/guide/en/elasticsearch/reference/5.3/keyword.html)**??字段用于聚合,如下: | `curl -XPUT?``'localhost:9200/my_index?pretty'`?`-H?``'Content-Type: application/json'`?`-d'` `{` `"mappings"``: {` `"my_type"``: {` `"properties"``: {` `"my_field"``: {? #?``1` `"type"``:?``"text"``,` `"fields"``: {` `"keyword"``: {? #?``2` `"type"``:?``"keyword"` `}` `}` `}` `}` `}` `}` `}` `'` | | 1 | 使用?**my_field**?用于搜索 | | 2 | 使用?**my_field.keyword**?用于聚合,排序,或者腳本. | ## 開啟text 字段的fielddata 你可以使用以下的?[PUT mapping API](https://www.elastic.co/guide/en/elasticsearch/reference/5.3/indices-put-mapping.html "Put Mapping")??給一個已經存在的?**text**?字段開啟?**fielddata**. | `curl -XPUT?``'localhost:9200/my_index/_mapping/my_type?pretty'`?`-H?``'Content-Type: application/json'`?`-d'` `{` `"properties"``: {` `"my_field"``: {? #?``1` `"type"``:?????``"text"``,` `"fielddata"``:?``true` `}` `}` `}` `'` | | 1 | 你為?**my_field**?指定的映射應包含該字段已有的映射,再加上?**fielddata**?參數. | 建議 **fielddata.*?**參數必須在相同索引的相同名稱的字段有相同的設置.可以使用?[PUT mapping API](https://www.elastic.co/guide/en/elasticsearch/reference/5.3/indices-put-mapping.html "Put Mapping")??在現有字段上更新其值. Global ordinals **Global ordinals**(全局序數)是一個基于?**field data**和?**doc_values**?的數據結構,它以字典順序每戶每個唯一?**term**(詞根)的增量編號.每個**term**(詞根)都有一個唯一的數,**term**(詞根)A是低于?**term**(詞根)B的.**Global ordinals**?(全局序數)僅在?**[`text`](https://www.elastic.co/guide/en/elasticsearch/reference/5.3/text.html "Text datatype")**?和?**[`keyword`](https://www.elastic.co/guide/en/elasticsearch/reference/5.3/keyword.html "Keyword datatype")**?字段中支持. **Fielddata**?和?**doc_values**?也有 ordinals(序數),它是特定**segment**(段)和字段中所有**term**(詞根)的唯一編號**.Global ordinals**(全局序數)只是建立在?**fielddata**和?**doc_values**之上,通過在**segement ordinals**?和?**global ordinals**?之間提供映射,后者在整個**shard**(分片)中是唯一的. **Global ordinals**?是用于使用?**segement ordinals**(片段序數)的功能,例如排序和?**terms**(詞根)聚合,以提高執行時間.**term**(詞根)聚合完全依賴于?**Global ordinals**(全局序數)來執行?**shard**?(分片)級別的聚合,然后將**global ordinals**?(全局序數)轉換為真正的?**term**(詞根),**term**(詞根)僅用于最終減少階段,其結合不同?**shard**(分片)的結果. 指定字段的?**Global ordinals**?(全局序數)與?**shard**(分片)所有的字段相關聯,而?**field data**?和?**doc_values?**與單個?**segment**(片段)相關聯.其與針對單個**segment**(段)相關聯的特定字段的字段數據不同,一旦新的**segment**(片段)變得可見,?**Global ordinals**(全局序數)就需要完全重建. ?**Global ordinals**(全局序數)取決于一個字段上的?**terms**(詞根)數量,但通常它是比較低的.因為源字符安數據已經被加載.**Global ordinals**(全局序數)的內存開銷很小,因為它被有效的壓縮. ## fielddata_frequency_filter **Fielddata?**過濾可以用于減少加載到內存中?**term**(詞根)數量,從而減少內存使用.**term**(詞根)可以按頻率來過濾 : 頻率過濾器允許你僅加載?**document**(文檔)頻率在最小和最大值之間的?**term**(詞根),可以表示為絕對數字(當數字大于1.0時)或百分比(例如0.01為1%,1.0為100%).每個**segment**計算頻率.百分比是基于?**docs**(文檔)的數量,而不是該**segment**(片段)的所有?**docs**(文檔). 通過使用?**min_segment_size?**指定?**segment**(片段)應包含的文檔和最小數量,可以完全排除?**?small segment**?(小的片段),如下: | `curl -XPUT?``'localhost:9200/my_index?pretty'`?`-H?``'Content-Type: application/json'`?`-d'` `{` `"mappings"``: {` `"my_type"``: {` `"properties"``: {` `"tag"``: {` `"type"``:?``"text"``,` `"fielddata"``:?``true``,` `"fielddata_frequency_filter"``: {` `"min"``:?``0.001``,` `"max"``:?``0.1``,` `"min_segment_size"``:?``500` `}` `}` `}` `}` `}` `}` `'` |
                  <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>

                              哎呀哎呀视频在线观看