1.映射(Mapping)
可以理解為對文檔及其字段進(jìn)行索引或存儲的方式。
可以拿Mapping和關(guān)系型數(shù)據(jù)庫中的schema類比,schema在關(guān)系型數(shù)據(jù)庫中指:庫表包含的字段及字段存儲類型等基礎(chǔ)信息。
下文中映射等價(jià)于Mapping。
Elasticsearch映射,描述了文檔可能具有的字段、屬性、每個(gè)字段的數(shù)據(jù)類型以及Lucene是如何索引和存儲這些字段的。
例如,使用映射定義:
·哪些字符串字段應(yīng)視為全文字段。
·哪些字段包含數(shù)字、日期或地理位置。
日期值的格式。
自定義規(guī)則來控制動(dòng)態(tài)添加字段的映射
映射定義由以下兩部分組成:
·元字段(Meta-fields)
·數(shù)據(jù)類型字段
元字段用于自定義如何處理文檔的相關(guān)元數(shù)據(jù)。
元字段的示例包括文檔的index,type,id和source字段
2.1 元字段
各種元字段,它們都以一個(gè)下劃線開頭,例如_type、_id 和_source。
2.1.1 ldentity 元字段
index:表示它所屬的文檔的索引。
·uid:type和 id的組合鍵,
·id:表示文檔的ID。
2.1.2 文檔源元字段
source:表示代表文檔正文的原始JSON對象·size:它表示source字段的大小(以字節(jié)為單位)
2.1.3 索引元字段
·field names:表示給定文檔中包含非空值的所有字段。
·timestamp:與每個(gè)文檔相關(guān)聯(lián)的手動(dòng)或自動(dòng)生成的時(shí)間戳
·tt:表示應(yīng)該保持活動(dòng)狀態(tài)的時(shí)間,之后該時(shí)間將被刪除。
3.數(shù)據(jù)字段
每個(gè)字段都有一個(gè)字段數(shù)據(jù)類型或字段類型。此類型表示 類型的數(shù)據(jù),例如字符串或布爾值,以及其預(yù)期用途。
字段類型按系列分組。同一系列中的類型恰好具有相同的搜索行為,但空間使用量或性能可能不同特性。
3.1常見類型
3.1.1 binary
編碼為 Base64 字符串的二進(jìn)制值。
3.1.2 boolean
true和價(jià)值觀。false
3.1.3 關(guān)鍵字
關(guān)鍵字系列,包括keywordconstant和keywordwildcard
3.1.4 數(shù)字
數(shù)字類型(如 和 )用于 快遞金額。long double
3.1.5 日期
日期類型,包括 date 和 date_nanos。
3.1.6 alias
定義現(xiàn)有字段的別名。
3.1.7 對象和關(guān)系類型
object
JSON 對象。
3.1.8 flattened
將整個(gè) JSON 對象作為單個(gè)字段值。
3.1.9 nested
保留關(guān)系的 JSON 對象 在其子字段之間。
3.1.10 join
定義文檔的父/子關(guān)系 在同一索引中。
3.2結(jié)構(gòu)化數(shù)據(jù)類型
3.2.1 范圍
范圍類型,例如long_rangedouble_range和date_rangeip_range
3.2.2ip
IPv4 和 IPv6 地址。
3.2.3 version
軟件版本。支持語義版本控制優(yōu)先規(guī)則。
3.2.4 murmur3
計(jì)算和存儲 值。
3.3聚合數(shù)據(jù)類型
3.3.1 aggregate_metric_double
預(yù)先聚合的指標(biāo)值。
3.3.2 histogram
以直方圖形式預(yù)先聚合的數(shù)值。
3.4 文本搜索類型
3.4.1文本字段
文本系列(包括test和match_only_text分析的非結(jié)構(gòu)化文本。
3.4.2 annotated-text
包含特殊 標(biāo)記。用于標(biāo)識命名實(shí)體。
3.4.3 completion
用于自動(dòng)完成建議。
3.4.5 search_as_you_type
text-like 類型 as-you-type 補(bǔ)全。
3.4.6 token_count
文本中的標(biāo)記計(jì)數(shù)。
3.5 文檔排名類型
3.5.1 dense_vector
記錄 float 值的密集向量。
3.5.2 rank_feature
記錄數(shù)字特征以提升命中率 查詢時(shí)間。
3.5.3 rank_features
記錄數(shù)字特征以提高命中率 查詢時(shí)間。
3.6 空間數(shù)據(jù)類型
3.6.1 geo_point
緯度和經(jīng)度點(diǎn)。
3.6.2 geo_shape
復(fù)雜形狀,例如多邊形。
3.6.3 point
任意笛卡爾點(diǎn)。
3.6.4 shape
任意笛卡爾幾何圖形。
3.7 其他類型
3.7.1 percolator
為 Query DSL 中編寫的查詢編制索引。
3.7.2 陣 列
在 Elasticsearch 中,數(shù)組不需要專用的字段數(shù)據(jù)類型。任何字段都可以包含 默認(rèn)情況下為零或多個(gè)值,但是,數(shù)組中的所有值都必須為 相同的字段類型。請參閱 數(shù)組。
3.8 多字段
對于不同的 目的。例如,字段可以映射為 一個(gè)用于全文搜索的字段,以及作為 排序或聚合。或者,您可以使用 Standard Analyzer(標(biāo)準(zhǔn)分析器)、English (英語) 分析器和 French 分析器(French Analyzer)。stringtextkeyword
這就是 multi-fields 的目的。大多數(shù)字段類型都支持多字段 通過 fields 參數(shù)。
4 mapping參數(shù)
4.1 analyzer
該參數(shù)指定在為字段編制索引或搜索字段時(shí)用于文本分析的分析器。analyzertext
除非被 search_analyzer 映射覆蓋 參數(shù),則此分析器用于 index 和 搜索分析。
(https://www.elastic.co/guide/en/elasticsearch/reference/8.1/analyzer.html)
4.2 coerce
強(qiáng)制 (Coercion) 嘗試清理臟值以適應(yīng)字段的數(shù)據(jù)類型。 例如:
字符串將被強(qiáng)制轉(zhuǎn)換為數(shù)字。
?整數(shù)值的浮點(diǎn)將被截?cái)唷?br>
(https://www.elastic.co/guide/en/elasticsearch/reference/8.1/coerce.html)
4.3 copy_to
該參數(shù)允許您將多個(gè)字段的值復(fù)制到一個(gè)組字段中,然后可以將其作為單個(gè)字段進(jìn)行查詢。
(https://www.elastic.co/guide/en/elasticsearch/reference/8.1/copy-to.html)
4.4 doc_values
默認(rèn)情況下,大多數(shù)字段都被索引,這使得它們可以搜索。倒排索引允許查詢在唯一排序的術(shù)語列表中查找搜索詞,并立即訪問包含該術(shù)語的文檔列表。
排序、聚合和訪問腳本中的字段值需要不同的數(shù)據(jù)訪問模式。我們需要能夠查找文檔并找到它在字段中的術(shù)語,而不是查找術(shù)語并查找文檔。
文檔值是磁盤上的數(shù)據(jù)結(jié)構(gòu),在文檔索引時(shí)構(gòu)建,這使得這種數(shù)據(jù)訪問模式成為可能。它們以面向列的方式存儲與但相同的值,這種方式對排序和聚合更有效。幾乎所有字段類型都支持文檔值,但文本和annotated_text字段除外。_source
4.5 dynamic
當(dāng)您索引包含新字段的文檔時(shí),Elasticsearch會(huì)將該字段動(dòng)態(tài)添加到文檔或文檔中的內(nèi)部對象。以下文檔在對象下添加了字符串字段、對象字段和兩個(gè)字符串字段:username
5.動(dòng)態(tài)映射(dynamic mappping)
Elasticsearch 最重要的功能之一是它嘗試獲取 讓您盡快開始探索數(shù)據(jù)。 要為文檔編制索引,您不必先創(chuàng)建索引,只需定義映射 type 并定義您的字段 — 您只需為文檔和索引 type 和 fields 將自動(dòng)顯示:
新字段的自動(dòng)檢測和添加稱為動(dòng)態(tài)映射。可以自定義動(dòng)態(tài)映射規(guī)則以滿足您的目的:
Dynamic field mappings
控制動(dòng)態(tài)場檢測的規(guī)則。
Dynamic templates
為動(dòng)態(tài)添加的字段配置映射的自定義規(guī)則。
5.1 Dynamic field mapping
當(dāng) Elasticsearch 在文檔中檢測到新字段時(shí),它會(huì)動(dòng)態(tài)地將該字段添加到 默認(rèn)情況下是 type 映射。dynamic 參數(shù)控制此行為。
您可以顯式指示 Elasticsearch 根據(jù)傳入 文檔,方法是將參數(shù)設(shè)置為 或 。什么時(shí)候 dynamic field mapping 時(shí),Elasticsearch 會(huì)使用下表中的規(guī)則來 確定如何映射每個(gè)字段的數(shù)據(jù)類型。
浙公網(wǎng)安備 33010602011771號