64.root object的理解
一、root object的理解
就是某個type對應的mapping json,包括properties,metadata(_id,_source,_type),settings(analyzer),其他settings(比如include_in_all等,下例中加黃色的就是root object)
PUT /my_index
{
"mappings": {
"my_type": {
"properties": {}
}
}
}
二、properties
在poperties中設置type,index,analyzer
示例
PUT /my_index/_mapping/my_type
{
"properties": {
"title": {
"type": "text"
}
}
}
三、_source
這個選項就是保存原始的json對象
優點:
(1)查詢的時候,直接可以拿到完整的document,不需要先拿document id,再發送一次請求拿document
(2)partial update基於_source實現
(3)reindex時,直接基於_source實現,不需要從數據庫(或者其他外部存儲)查詢數據再修改
(4)可以基於_source定制返回
(5)debug query更容易,因為可以直接看到_source
如果不需要上述好處,可以禁用_source,這樣就不保存原始的json對象。
PUT /my_index/_mapping/my_type2
{
"_source": {"enabled": false}
}
只能是建立索引時就設置,一但建立索引後就不能再更改。
四、_all
將所有field合並串聯在一起,作為一個_all field字符串,建立索引並進行分詞。如果在搜索過程中沒指定任何field進行搜索時,就是使用_all field在搜索。也可以在新建index時把該選項設置為
PUT /my_index/_mapping/my_type3
{
"_all": {"enabled": false}
}
也可以在field級別設置include_in_all field,設置是否要將field的值包含在_all field中
示例
PUT /my_index/_mapping/my_type4
{
"properties": {
"my_field": {
"type": "text",
"include_in_all": false
}
}
}
5、標識性metadata
_index,_type,_id
64.root object的理解