介紹elasticsearch中Mapping
這篇檔案介紹elasticsearch中mapping
特性。我們會定義其關鍵術語,並進一步介紹mapping
是什麼,什麼時候指定它,其結構是怎樣的以及如何應用到我們的資料中。
Schema是什麼
schema
翻譯為模式
mapping
翻譯為對映
模式是一個或多個欄位的描述,描述文件的型別以及如何處理文件的不同欄位。
在elasticsearch
中schema
就是mapping
,其用於描述在json
文件中的欄位和資料型別,以及它們在Lucene
索引中如何進行索引。因此,在elasticsearch
術語中,我們通常將該模式稱為對映
。
在概念上,elasticsearch
伺服器包含零個或多個索引。一個索引包含零個或多個型別,其型別又包含零個或多個文件。換句話說:一個文件有一個標識,會屬於一個型別,其又會屬於一個索引。下圖顯示在索引my_index
my_type
型別中的文件A
、B
、X
和Y
.
上圖將型別名為another_type
和索引名為another
顯示出來是為了強調elasticsearch
是多庫
的,其意味著我們可以在單個伺服器上儲存多個索引和多個型別。
在elasticsearch
文件和相關資料中,我們常常看到術語mapping type
, 其通常表示在索引內的type
名稱,例如上圖中的my_type
和another_type
。
當我們在elasticsearch
中說到型別,其通常是型別的定義。不要和每個mapping
中的type
關鍵字混淆了,該關鍵字決定了文件中的資料如何由elasticsearch
來處理。
什麼時候使用自定義的對映
elasticsearch
具有無模式的能力,這意味著文件在沒有明確提供模式下也能被索引。
如果你不指定對映,則在索引期間檢測到文件中的新欄位時,elasticsearch
將預設會動態生成一個動態對映。然而,這個動態生成的對映需要注意:
- 檢測到的型別可能不正確
- 可能會導致不必要的重複。(特別是
_source
和_all
欄位)。 - 對於索引和搜尋會使用預設的分詞器和設定。
例如:時間戳在json
中常常表示為long
,但是elasticsearch
可能不能將其檢測為date
欄位,從而阻止了date
過濾器和facets
(the date histogram facet
)正常工作。
明確指定模式,我們可以避免上述的問題。
對映看起了像什麼?
對映通常作為json
提供給elasticsearch
,是一種分層結構格式,root
是對映應用的型別名稱。
Mapping Root
在對映root
級別,在型別名稱下,elasticsearch
支援幾個特殊
欄位來配置如何處理不是要釋出文件部分的元資料,例如:其type
,id
,size
和fallback _all field
。有關支援的特殊
欄位的列表,請參閱Mapping Reference
右側列表中的fields
。
root
物件還可以有其他額外的屬性,它可以為型別設定預設索引和搜尋分析器,在型別中的日期會自動解析為日期的格式以及動態模板 - 我們將在以後的文章中重新討論這些屬性。除了上述領域,巢狀json文件的root
基本和其他對映基本之間沒有區別。
Hierarchical Levels 層次級別
每個層次通常定義一個properties
設定,對層次中的文件的key
進行對映。這個結構是分層的,意味著每個級別下的葉子節點可能包括其子值的properties
設定。為了更好理解,思考下面的文件和其對映:
Document:
{
"name": {
"first": "John"
}
}
Mapping:
{
"my_type" : {
"properties" : {
"name" : {
"properties" : {
"first" : {
"type" : "string"
}
}
}
}
}
}
雖然對映比文件稍微複雜點,對映的結果清晰的遵循文件的結構,並添加了properties
節點。
上面層次:
第一層:key為name
這層,歸屬type
。
第二層:key為first
這層,歸屬第一層。
所以在設定對映關係時,第一層是被my_type
包裹著,第二層是被name
這層包裹著,其中它們都是要用properties
欄位包裹著,表示設定的對映關係。
The type Key
在上面的例子中,我們看到文件欄位name.first
與其他結構的區別在於它定義了一個type
。在葉子層次中使用的type
鍵是為了告訴elasticsearch
在文件給定(相同)的層次中如何處理該欄位。如果type
鍵被省略, 如非葉子層次型別情況,elasticsearch
會假設其為object
(物件)型別。
string
型別是內建的核心型別之一,elasticsearch
支援許多不同的型別,例如:geo_point
和ip
,其可以分別用於有效索引和搜尋地理位置和IPv4
地址。使用multi_field
型別,我們甚至可以將單個文件欄位索引到多個虛擬欄位中。我們將在未來的文章中詳細說明。
如何提供Mapping
這裡有兩種方式來提供mapping
給elasticsearch
。
最常見的方式是在建立索引時:
curl -XPOST ...:9200/my_index -d '{
"settings" : {
# .. index settings
},
"mappings" : {
"my_type" : {
# mapping for my_type
}
}
}'
$ curl -XPUT 'http://localhost:9200/my_index/my_type/_mapping' -d '
{
"my_type" : {
# mapping for my_type
}
}
'
注意:該型別(my_type
)在請求路徑和請求體中是相同的。
此API
使我們能夠更新現有索引的對映,但是存在潛在的衝突和一些限制。新定義的對映可以新增到現有對映中,並且已有的型別可能會更新他們的配置,但是改變型別將會發生衝突並且是不可接受的。然而可以通過將ignore_conflicts=true
作為引數傳遞給Mapping API
,但這樣做不能保證產生預期的結果,因為已經索引的文件在使用新對映時不會自動重新索引(類似於插入操作)文件。
因此,在大多數情況下,建議使用Put Mapping API
在建立索引時,指定對映。
結束語
相關推薦
介紹elasticsearch中Mapping
這篇檔案介紹elasticsearch中mapping特性。我們會定義其關鍵術語,並進一步介紹mapping是什麼,什麼時候指定它,其結構是怎樣的以及如何應用到我們的資料中。 Schema是什麼 schema翻譯為模式 mapping 翻譯為對映 模式是
elasticsearch中mapping中的可設定的屬性
mappings : 在index(庫)下建立時使用,下面可以有多個mapping 以下資料結構主要針對每個mapping進行說明: 一級屬性 二級屬性 三級屬性 說明 dynamic &nbs
elasticsearch中mapping全解實戰
目錄 Mapping簡介 Mapping Type 分詞器最佳實踐 欄位型別 text 型別 keyword 型別 date型別 object型
elasticsearch中的欄位型別/mapping引數
查看錶結構的定義 GET /testindex/_mapping GET /testindex/testtable/_mapping (一)核心資料型別: (1)string: 預設會被分詞 string型別包括:text 和 keyword 一個完整示例如下 :
對映型別(mapping type)從Elasticsearch中移除
原文:https://www.elastic.co/guide/en/elasticsearch/reference/current/removal-of-types.html 注意:在Elasticsearch6.0.0或者或者更新版本中建立的索引只會包含一個對映型別(
elasticsearch核心知識---49.ES中mapping root object _source _all _store _index關鍵字理解
關於_source _all _store _index 這四個關鍵字 在這篇文章中非常詳細點選開啟連結1.root object就是某個type對應的mapping json,包括了properties,metadata(_id,_source,_type),se
第十二篇 elasticsearch中的mapping透徹理解
首先插入幾條資料,讓es自動為我們建立一個索引 PUT /website/article/1 { "post_date": "2017-01-01", "title": "my first article", "content": "this
ElasticSearch中Java Scroll API介紹
原文地址:https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/java-search-scrolling.html Using scrolls in Javaedit
elasticsearch中給已存在的mapping增加新欄位並賦值
es中建立後的mapping不可修改,但是可以新增新欄位 新增新欄位: PUT /my_index/_mapping/my_type { "properties": { "new_field_name": { "type"
ElasticSearch中search after處理深分頁介紹
原文地址:https://www.elastic.co/guide/en/elasticsearch/reference/5.5/search-request-search-after.html Search Afteredit Pagination o
Elasticsearch中的分詞介紹
1、概述 在我們初次使用Elasticsearch查詢的時候,有時會很困惑,為什麼我儲存的一段String資料,卻查詢不到?為什麼輸入了漢語單詞,只能一個字一個字的匹配?等這些都與是否分詞、使用什麼分詞器有關。 1.1 分詞概念 首先說說什麼是分詞器吧!
ElasticSearch 中的 Mapping
> **公號:碼農充電站pro** > **主頁:** ### 1,ES 中的 Mapping ES 中的 [Mapping](https://www.elastic.co/guide/en/elasticsearch/reference/7.10/mapping.html) 相當於傳統資料庫中的**表定
elasticsearch中的幾個概念總結
查詢 article ase con 總結 diff 返回 cse nan 1、Geo spatial search : 地理空間搜索,可以在搜索查詢中指定的某一距離內查找所要的內容。也可以返回以當前為圓心,逐漸添加圓的半徑。直到找到所匹配到的內容。
介紹hadoop中的hadoop和hdfs命令
命令行 註意 property 密碼 編輯 format gety node job 有些hive安裝文檔提到了hdfs dfs -mkdir ,也就是說hdfs也是可以用的,但在2.8.0中已經不那麽處理了,之所以還可以使用,是為了向下兼容. 本文簡要介紹一下有關的命令,
D3js-API介紹【中】
模擬 數組的數組 median factor from position 依據 tracking -a JavaScript可視化圖表庫D3.js API中文參考,d3.jsapi D3 庫所提供的全部 API 都在 d3 命名空間下。d3 庫使用語義版本
elasticsearch的mapping和analysis
repl 個推 field mat parent ppi 逗號 rip lin 轉發自:http://blog.csdn.net/hzrandd/article/details/47128895 分析和分析器 分析(analysis)是這樣一個過程: 首先,表征化一
ElasticSearch 中 master、data 和 client 節點
表示 elastic pan 問題 請求 tro arch 兩個 服務器 在生產環境下,如果不修改elasticsearch節點的角色信息,在高數據量,高並發的場景下集群容易出現腦裂等問題。 默認情況下,elasticsearch 集群中每個節點都有成為主節點的資格
簡單介紹 C++中變量的引用
簡單 變量 9.png -1 技術分享 png log 介紹 .com 簡單介紹 C++中變量的引用
介紹nodejs中的path模塊的幾個方法
rsync wro 不同 osi {} tip multi 發現 post webpack中常用的: var path = require(‘path‘) 是nodejs中的path模塊,介紹一下webpack中常用的幾個path模塊的方法: 應用node環境的時候,這個p
Elasticsearch中document的基礎知識
元數據 不同 一個 返回 document elastics nbsp test 唯一標識 寫在前面的話:讀書破萬卷,編碼如有神-------------------------------------------------------------------- 參考內容