- ElasticSearch Cookbook
- Alberto Paro
- 408字
- 2021-04-02 10:09:59
Using explicit mapping creation
If we consider the index as a database in the SQL world, the mapping is similar to the table definition.
Getting ready
You need a working ElasticSearch cluster, a test
index (refer to the Creating an index recipe in Chapter 4, Standard Operations), and basic knowledge of JSON.
How to do it...
For explicit mapping creation, we will perform the following steps:
- You can explicitly create a mapping by adding a new element in ElasticSearch.
On bash:
#create an index curl -XPUT http://127.0.0.1:9200/test #{"ok":true,"acknowledged":true} #put a record curl -XPUT http://127.0.0.1:9200/test/mytype/1 -d '{"name":"Paul", "age":35}' # {"ok":true,"_index":"test","_type":"mytype","_id":"1","_version":1} #get the mapping and pretty print it curl –XGET http://127.0.0.1:9200/test/mytype/_mapping?pretty=true
- The result mapping auto-created by ElasticSearch should be as follows:
{ "mytype" : { "properties" : { "age" : { "type" : "long" }, "name" : { "type" : "string" } } } }
How it works...
The first command line creates the test
index, decides where to put the document and the type/mapping.
The second command line inserts a document in the index. We'll see the index creation and record indexing in the next chapter.
During the document index phase, ElasticSearch controls if the mytype
type exists, otherwise, it creates an empty one.
ElasticSearch reads all the default properties for the field of the mapping and starts to process them as follows:
- If the field is already present in the mapping and the value of the field is valid, it processes the field
- If the field is already present in the mapping, but the value of the field is of a different type, it processes the field as a new type, migrating the previous field format in a multifield
- If the field is not present, it tries to auto-detect the type of field, it updates the mappings (or adding a new field mapping or converting the actual field in a multifield
There's more...
All the document types go in the same Lucene index, so there isn't full separation between them.
Every document has a unique identifier called UID, stored in the special uid
field of the document. It's calculated by adding the type of document to the _id
field.
The _id
field can be provided at index time or can be assigned automatically by ElasticSearch if it's missing.
ElasticSearch transparently manages the propagation of a type mapping to all the nodes of a cluster, so that all the shards are aligned to processes of that particular type.
- 操作系統實用教程(Linux版)
- 30天自制操作系統
- Mastering ElasticSearch
- 從零開始寫Linux內核:一書學透核心原理與實現
- 白話區塊鏈
- vSphere Virtual Machine Management
- 計算機系統開發與優化實戰
- Windows Server 2019 Administration Fundamentals
- AWS Development Essentials
- Application Development in iOS 7
- Linux命令行大全(第2版)
- 計算機應用基礎(Windows 7+Office 2016)
- 寫給架構師的Linux實踐:設計并實現基于Linux的IT解決方案
- 從零開始學安裝與重裝系統
- Ubuntu Linux操作系統實用教程