2013-08-27 129 views
7

好吧,我elastisearch我使用下面的映射爲一個索引:如何在elasticsearch中定義一個映射,該映射不接受映射映射的字段?

{ 

    "mappings": { 
     "mytype": { 
      "type":"object", 
      "dynamic" : "false", 
      "properties": { 
       "name": { 
        "type": "string" 
       }, 
       "address": { 
        "type": "string" 
       }, 
       "published": { 
        "type": "date" 
       } 

      } 
     } 
    } 
} 

它的工作原理。事實上,如果我在「已發佈」字段中輸入格式錯誤的日期,它會發生抱怨並失敗。 此外,我已經配置如下:

... 
node.name : node1 
index.mapper.dynamic : false 
index.mapper.dynamic.strict : true 
... 

而且沒有映射,我真的不能使用的類型。問題是,如果我插入這樣的:

{ 「名」: 「boh58585」, 「地址」: 「hiohio」, 「發表」: 「2014年4月4日」, 「測試」 :「hophiophop」 }

它會高興地接受它。這不是我期望的行爲,因爲字段test不在映射中。我怎樣才能限制文檔的字段只有那些在映射?

回答

10

使用"dynamic": false告訴Elasticsearch絕不允許改變索引的映射。如果您想在嘗試使用定義映射外的字段索引新文檔時拋出錯誤,請改用"dynamic": "strict"

來自文檔: 「動態參數也可以設置爲strict,這意味着不僅新映射不會被引入到映射中,對這些新字段進行解析(索引)文檔將失敗。」

既然你已經在設置中定義了這個,我猜測從映射定義中完全忽略dynamic將默認爲"dynamic": "strict"