索引庫(kù)就類似數(shù)據(jù)庫(kù)表,mapping映射就類似表的結(jié)構(gòu)。
我們要向es中存儲(chǔ)數(shù)據(jù),必須先創(chuàng)建“庫(kù)”和“表”。
2.1.mapping映射屬性
mapping是對(duì)索引庫(kù)中文檔的約束,常見(jiàn)的mapping屬性包括:
-
type:字段數(shù)據(jù)類型,常見(jiàn)的簡(jiǎn)單類型有:
-
字符串:text(可分詞的文本)、keyword(精確值,例如:品牌、國(guó)家、ip地址)
-
數(shù)值:long、integer、short、byte、double、float、
-
布爾:boolean
-
日期:date
-
對(duì)象:object
-
-
index:是否創(chuàng)建索引,默認(rèn)為true
-
analyzer:使用哪種分詞器
-
properties:該字段的子字段
其中index如果設(shè)置為false,表示不參與搜索,一些比如image的路徑地址,郵箱等可以設(shè)置為false;?
例如下面的json文檔:
{
????"age":?21,
????"weight":?52.1,
????"isMarried":?false,
????"info":?"黑馬程序員Java講師",
? ?"email":?"zy@itcast.cn",
? ?"score":?[99.1, 99.5, 98.9],
????"name":?{
????????"firstName":?"云",
????????"lastName":?"趙"
????}
}
對(duì)應(yīng)的每個(gè)字段映射(mapping):
-
age:類型為 integer;參與搜索,因此需要index為true;無(wú)需分詞器
-
weight:類型為float;參與搜索,因此需要index為true;無(wú)需分詞器
-
isMarried:類型為boolean;參與搜索,因此需要index為true;無(wú)需分詞器
-
info:類型為字符串,需要分詞,因此是text;參與搜索,因此需要index為true;分詞器可以用ik_smart
-
email:類型為字符串,但是不需要分詞,因此是keyword;不參與搜索,因此需要index為false;無(wú)需分詞器
-
score:雖然是數(shù)組,但是我們只看元素的類型,類型為float;參與搜索,因此需要index為true;無(wú)需分詞器
-
name:類型為object,需要定義多個(gè)子屬性
-
name.firstName;類型為字符串,但是不需要分詞,因此是keyword;參與搜索,因此需要index為true;無(wú)需分詞器
-
name.lastName;類型為字符串,但是不需要分詞,因此是keyword;參與搜索,因此需要index為true;無(wú)需分詞器
-
2.2.索引庫(kù)的CRUD
這里我們統(tǒng)一使用Kibana編寫DSL的方式來(lái)演示。
2.2.1.創(chuàng)建索引庫(kù)和映射
基本語(yǔ)法:
-
請(qǐng)求方式:PUT
-
請(qǐng)求路徑:/索引庫(kù)名,可以自定義
-
請(qǐng)求參數(shù):mapping映射
格式:
PUT?/索引庫(kù)名稱
{
??"mappings":?{
????"properties":?{
??????"字段名":{
????????"type":?"text",
????????"analyzer":?"ik_smart"
??????},
??????"字段名2":{
????????"type":?"keyword",
????????"index":?"false"
??????},
??????"字段名3":{
????????"properties":?{
??????????"子字段":?{
????????????"type":?"keyword"
??????????}
????????}
??????},
? ? ?// ...略
????}
??}
}
示例:
# 創(chuàng)建索引庫(kù)
PUT?/heima
{
"mappings": {
"properties": {
"info":{
"type": "text",
"analyzer": "ik_smart"
},
"email":{
"type":"keyword",
"index":false
},
"name":{
"type": "object",
"properties":{
"firstName":{
"type":"keyword"
},
"lastName":{
"type":"keyword"
}
}
}
}
}
}
2.2.2.查詢索引庫(kù)
基本語(yǔ)法:
-
請(qǐng)求方式:GET
-
請(qǐng)求路徑:/索引庫(kù)名
-
請(qǐng)求參數(shù):無(wú)
格式:
GET /索引庫(kù)名
示例:
2.2.3.修改索引庫(kù)
倒排索引結(jié)構(gòu)雖然不復(fù)雜,但是一旦數(shù)據(jù)結(jié)構(gòu)改變(比如改變了分詞器),就需要重新創(chuàng)建倒排索引,這簡(jiǎn)直是災(zāi)難。因此索引庫(kù)一旦創(chuàng)建,無(wú)法修改mapping。
雖然無(wú)法修改mapping中已有的字段,但是卻允許添加新的字段到mapping中,因?yàn)椴粫?huì)對(duì)倒排索引產(chǎn)生影響。
語(yǔ)法說(shuō)明:
PUT?/索引庫(kù)名/_mapping
{
??"properties":?{
????"新字段名":{
??????"type":?"integer"
????}
??}
}
示例:
2.2.4.刪除索引庫(kù)
語(yǔ)法:
-
請(qǐng)求方式:DELETE
-
請(qǐng)求路徑:/索引庫(kù)名
-
請(qǐng)求參數(shù):無(wú)
格式:
DELETE /索引庫(kù)名
在kibana中測(cè)試:
2.2.5.總結(jié)
索引庫(kù)操作有哪些?
-
創(chuàng)建索引庫(kù):PUT /索引庫(kù)名
-
查詢索引庫(kù):GET /索引庫(kù)名
-
刪除索引庫(kù):DELETE /索引庫(kù)名文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-852452.html
-
添加字段:PUT /索引庫(kù)名/_mapping文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-852452.html
到了這里,關(guān)于微服務(wù)day05(中) -- ES索引庫(kù)操作的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!