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

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # fielddata(字段數據) 原文鏈接 : [https://www.elastic.co/guide/en/elasticsearch/reference/5.3/fielddata.html#field-data-filtering](https://www.elastic.co/guide/en/elasticsearch/reference/5.3/fielddata.html#field-data-filtering) 譯文鏈接 : [fielddata(字段數據)](/pages/viewpage.action?pageId=10028596) 貢獻者 : [程威](/display/~chengwei),[ApacheCN](/display/~apachecn),[Apache中文網](/display/~apachechina) 所有字段是默認被 [**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>

                              哎呀哎呀视频在线观看