ES基礎(十)Dynamic Mapping 和常見字段類型


Mapping中的字段一旦設定后,禁止直接修改。因為倒排索引生成后不允許直接修改。需要重新建立新的索引,做reindex操作。

類似數據庫中的表結構定義,主要作用

  • 定義所以下的字段名字
  • 定義字段的類型
  • 定義倒排索引相關的配置(是否被索引?采用的Analyzer)

對新增字段的處理 true false strict

在object下,支持做dynamic的屬性的定義

 

 

 

 

 

 

 

 

 

 

 

 

#寫入文檔,查看 Mapping
PUT mapping_test/_doc/1
{
  "firstName":"Chan",
  "lastName": "Jackie",
  "loginDate":"2018-07-24T10:29:48.103Z"
}

#查看 Mapping文件
GET mapping_test/_mapping


#Delete index
DELETE mapping_test

#dynamic mapping,推斷字段的類型
PUT mapping_test/_doc/1
{
    "uid" : "123",
    "isVip" : false,
    "isAdmin": "true",
    "age":19,
    "heigh":180
}

#查看 Dynamic
GET mapping_test/_mapping


#默認Mapping支持dynamic,寫入的文檔中加入新的字段
PUT dynamic_mapping_test/_doc/1
{
  "newField":"someValue"
}

#該字段可以被搜索,數據也在_source中出現
POST dynamic_mapping_test/_search
{
  "query":{
    "match":{
      "newField":"someValue"
    }
  }
}


#修改為dynamic false
PUT dynamic_mapping_test/_mapping
{
  "dynamic": false
}

#新增 anotherField
PUT dynamic_mapping_test/_doc/10
{
  "anotherField":"someValue"
}


#該字段不可以被搜索,因為dynamic已經被設置為false
POST dynamic_mapping_test/_search
{
  "query":{
    "match":{
      "anotherField":"someValue"
    }
  }
}

get dynamic_mapping_test/_doc/10

#修改為strict
PUT dynamic_mapping_test/_mapping
{
  "dynamic": "strict"
}



#寫入數據出錯,HTTP Code 400
PUT dynamic_mapping_test/_doc/12
{
  "lastField":"value"
}

DELETE dynamic_mapping_test

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM