elasticsearch之mapping配置
阿新 • • 發佈:2019-01-02
序
本文主要記錄es的schema mapping的一些配置項
mapping定義
{ "mappings": { "post": { "properties": { "id": {"type":"long", "store":"yes", "precision_step":"8" }, "name": {"type":"string", "store":"yes", "index":"analyzed" }, "published": {"type":"date", "store":"yes", "precision_step":"8" }, "contents": {"type":"string", "store":"no", "index":"analyzed" } } } } }
或者
{ "book" : { "_index" : { "enabled" : true }, "_id" : { "index": "not_analyzed", "store" : "yes" }, "properties" : { "author" : { "type" : "string" }, "characters" : { "type" : "string" }, "copies" : { "type" : "long", "ignore_malformed" : false }, "otitle" : { "type" : "string" }, "tags" : { "type" : "string" }, "title" : { "type" : "string", "fields":{ "sort":{"type":"string","index":"not_analyzed"} } }, "year" : { "type" : "long", "ignore_malformed" : false, "index" : "analyzed" }, "available" : { "type" : "boolean" } } } }
屬性解說
-
index
可選值為analyzed(預設)和no,如果是欄位是字串型別的,則可以是not_analyzed. -
store
可選值為yes或no,指定該欄位的原始值是否被寫入索引中,預設為no,即結果中不能返回該欄位。 -
boost
預設為1,定義了文件中該欄位的重要性,越高越重要 -
null_value
如果一個欄位為null值(空陣列或者陣列都是null值)的話不會被索引及搜尋到,null_value引數可以顯示替代null values為指定值,這樣使得欄位可以被搜尋到。 -
include_in_all
指定該欄位是否應該包括在_all欄位裡頭,預設情況下都會包含。
mapping操作
新建mapping
curl -s -XPOST '192.168.99.100:9200/library' --data-binary @mapping.json
更新mapping
curl -XPOST '192.168.99.100:9200/library/book/_mapping' -d'
{
"book": {
"properties": {
"description": {
"type": "string",
"store": "yes",
"index": "analyzed"
}
}
}
}
'
檢視mapping
curl -XGET '192.168.99.100:9200/library/book/_mapping?pretty'
返回
{
"library" : {
"mappings" : {
"book" : {
"properties" : {
"author" : {
"type" : "string"
},
"available" : {
"type" : "boolean"
},
"characters" : {
"type" : "string"
},
"copies" : {
"type" : "long"
},
"description" : {
"type" : "string",
"store" : true
},
"otitle" : {
"type" : "string"
},
"section" : {
"type" : "long"
},
"tags" : {
"type" : "string"
},
"title" : {
"type" : "string"
},
"year" : {
"type" : "long"
}
}
}
}
}
}
可以修改的項:
-
增加新的型別定義
-
增加新的欄位
-
增加新的分析器
不允許修改的項:
-
更改欄位型別(
比如文字改為數字
) -
更改儲存為不儲存,反之亦然
-
更改索引屬性的值
-
更改已索引文件的分析器
注意的是新增欄位或更改分析器之後,需要再次對所有文件進行索引重建
欄位的資料型別
簡單型別
-
string(
指定分詞器
) -
date(
預設使用UTC保持,也可以使用format指定格式
) -
數值型別(
byte,short,integer,long,float,double
) -
boolean
-
binary(
儲存在索引中的二進位制資料的base64表示,比如影象,只儲存不索引
) -
ip(
以數字形式簡化IPV4地址的使用,可以被索引、排序並使用IP值做範圍查詢
).
有層級結構的型別
比如object 或者 nested.
特殊型別
比如geo_point, geo_shape, or completion.