日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ElasticSearch映射Mapping

發(fā)布時間:2025/3/15 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ElasticSearch映射Mapping 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1.1 什么是映射

(1) 映射(mapping): 定義index的元數(shù)據(jù), 指定要索引并存儲的文檔的字段類型.

也就是說映射決定了Elasticsearch在建立倒排索引、進(jìn)行檢索時對文檔采取的相關(guān)策略, 如數(shù)字類型、日期類型、文本類型等等.

需要注意的是:?檢索時用到的分析策略, 要和建立索引時的分析策略相同, 否則將導(dǎo)致數(shù)據(jù)不準(zhǔn)確.

(2) ES對不同的類型有不同的存儲和檢索策略.

① 比如: 對full text型的數(shù)據(jù)類型(如text), 在索引時, 會經(jīng)過各類處理 (包括分詞、normalization(時態(tài)轉(zhuǎn)換、同義詞轉(zhuǎn)換、大小寫轉(zhuǎn)換)等處理), 才會建立到索引數(shù)據(jù)中.
② 再比如: 對exact value(如date), 在索引的分詞階段, 會將整個value作為一個關(guān)鍵詞建立到倒排索引中.

1.2 映射的組成

每個index都有一?(至多)?個type, 每個type對應(yīng)一個mapping.

在Elasticsearch 6.X版本開始, 1個index只能有1個type.

每個mapping都由下述部分組成:

① 元字段:?_index、_type、_id?和?_source.
② field/properties(字段或?qū)傩?:?同一index中, 同名的field的映射配置必須相同

a) 因為index是根據(jù)_type元字段來區(qū)分type的, 也就是存儲的每個文檔中都有_type等元字段, 如果相同名稱的field的映射(_type字段的值)不同, Elasticsearch在解析時就會出現(xiàn)沖突.

b) 這些參數(shù)可以例外:?copy_to、dynamic、enabled、ignore_above、include_in_all.

關(guān)于type的處理方法, 可以參考博客:?ES XX - Elasticsearch對type的處理(type的底層結(jié)構(gòu)).

1.3 元字段

每個文檔都有與之關(guān)聯(lián)的元數(shù)據(jù) —— ES內(nèi)部為所有的文檔配備的field, 都是以下劃線_開頭的內(nèi)置字段.

具體的內(nèi)容請參考博文?ES XX - Elasticsearch的元字段?中詳細(xì)講解.

1.4 字段的類型

Elasticsearch中每個field都對應(yīng)一至多個數(shù)據(jù)類型.

詳細(xì)的內(nèi)容請參考博文?ES XX - Elasticsearch中字段的類型?中詳細(xì)講解.

?

什么是Mapping映射?
映射:創(chuàng)建索引的時候,可以預(yù)先定義字段的類型以及相關(guān)屬性。
作用:這樣會讓索引建立得更加的細(xì)致和完善!
分類:靜態(tài)映射和動態(tài)映射

ElasticSearch在做字段映射的時候可以定義的類型

映射的屬性方法

除了定義字段的類型,還可以給字段定義相關(guān)的屬性

?

?

?

?創(chuàng)建mapping

(1) 必讀說明:

① 創(chuàng)建mapping時, 可以指定每個field是否需要:

索 引:?"index": true?—— 默認(rèn)配置
不索引:?"index": false

②?mapping root object:

每個type對應(yīng)的mapping的JSON串, 包括properties, metadata(_id, _source, _type) , settings(analyzer) , 其他settings(如include_in_all)

(2) 創(chuàng)建mapping的示例:

?更新mapping

(1) 必讀說明:

  • 映射一旦創(chuàng)建完成, 就不允許修改:

    —— Elasticsearch對文檔的分析、存儲、檢索等過程, 都是嚴(yán)格按照mapping中的配置進(jìn)行的. 如果允許后期修改mapping, 在檢索時對索引的處理將存在不一致的情況, 導(dǎo)致數(shù)據(jù)檢索行為不準(zhǔn)確.

  • 只能在創(chuàng)建index的時候手動配置mapping, 或者新增field mapping, 但是不能update field mapping.

(2) 更新mapping出現(xiàn)異常:

?

?

(3) 過期提示說明 —— 這里使用的是Elasticsearch 6.8.6版本:

① 是否索引的API已經(jīng)做了修改, 若使用"analyzed" | "not_analyzed" | "yes" | "no"等, 將拋出如下警告:

#! Deprecation: Expected a boolean [true/false] for property [index] but got [not_analyzed] #! Deprecation: Expected a boolean [true/false] for property [index] but got [no]

②?_all元字段也將在7.0版本中移除, 它建議我們使用copy_to定制自己的all field:

#! Deprecation: [_all] is deprecated in 6.0+ and will be removed in 7.0. As a replacement, you can use [copy_to] on mapping fields to create your own catch all field.

在6.8.6版本中我們使用true或false

字段類型的設(shè)置,在6.8.6版本中使用text文本類型,不能使用string在過去早期的版本可以使用

?

?所以我們新增一個索引test

?

總結(jié)

以上是生活随笔為你收集整理的ElasticSearch映射Mapping的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。