ES學(xué)習(xí)--自定義Mapping的設(shè)置和常見參數(shù)詳解
構(gòu)建自定義Mapping通常情況下,ElasticSearch在創(chuàng)建索引時會自動構(gòu)建Mapping結(jié)構(gòu),并根據(jù)字段內(nèi)容推斷字段類型。然而,這種自動構(gòu)建可能存在問題,例如字段類型推斷不準(zhǔn)確或默認(rèn)構(gòu)建倒排
構(gòu)建自定義Mapping
通常情況下,ElasticSearch在創(chuàng)建索引時會自動構(gòu)建Mapping結(jié)構(gòu),并根據(jù)字段內(nèi)容推斷字段類型。然而,這種自動構(gòu)建可能存在問題,例如字段類型推斷不準(zhǔn)確或默認(rèn)構(gòu)建倒排索引。為解決這些問題,我們可以自定義Mapping來指定字段類型及其他參數(shù)。通過使用PUT請求 索引名稱 mapping語法結(jié)構(gòu),可以靈活定義字段名稱、類型以及其他屬性。
最佳實踐
雖然可以參考手冊編寫Mapping,但更推薦的做法是創(chuàng)建一個測試索引并插入測試文檔,查看ElasticSearch為該索引自動生成的Mapping。在此基礎(chǔ)上進行修改,可以更準(zhǔn)確地構(gòu)建符合需求的Mapping,避免錯誤和提高效率。
自定義Mapping常用參數(shù)--index
默認(rèn)情況下,自定義Mapping和自動生成的Mapping類似,會為所有字段構(gòu)建倒排索引,使得所有字段都可作為搜索條件。然而,有時我們希望某些字段不能被搜索,如手機號碼等私密信息。通過將字段定義部分的index參數(shù)設(shè)置為false,可以實現(xiàn)該目的。這種設(shè)置不僅可以阻止惡意搜索,還能節(jié)省存儲空間。
自定義Mapping常用參數(shù)--null_value
針對文檔中某些字段值為null的情況,無法直接搜索??梢栽贛apping中為該字段指定null_value屬性,即null的替代值。這樣,在搜索時使用替代值即可查詢到字段為null的文檔。需要注意的是,文本類型和數(shù)值類型字段無法使用null_value屬性,而keyword類型和date類型字段則可以。
自定義Mapping常用參數(shù)--copy_to
通過在字段中添加copy_to屬性,可以將多個字段的值復(fù)制到另一個字段中。這個目標(biāo)字段也會經(jīng)過分詞處理,方便在搜索時檢索相關(guān)內(nèi)容。copy_to屬性的應(yīng)用,可以有效簡化查詢邏輯和優(yōu)化搜索結(jié)果的準(zhǔn)確性。
索引字段的數(shù)組表示
在ElasticSearch中,不存在嚴(yán)格的數(shù)組數(shù)據(jù)類型概念,一個字段可以保存單個數(shù)值或者數(shù)值數(shù)組。比如text、integer等類型的字段既可以保存單個數(shù)值,也可以保存數(shù)值數(shù)組。這種靈活性為數(shù)據(jù)存儲和查詢提供了更多可能性,同時也需要在Mapping設(shè)計時考慮數(shù)據(jù)結(jié)構(gòu)的一致性。
以上是關(guān)于自定義Mapping設(shè)置及常見參數(shù)的介紹,通過靈活運用這些功能,可以更加精確地定義數(shù)據(jù)結(jié)構(gòu)、提升搜索效率,并為數(shù)據(jù)分析與挖掘提供有力支持。在實際應(yīng)用中,結(jié)合具體業(yè)務(wù)需求和數(shù)據(jù)特點,深入理解Mapping的設(shè)置方式和參數(shù)含義,將有助于優(yōu)化ElasticSearch的應(yīng)用性能和數(shù)據(jù)管理效果。