2017-08-17 31 views
2

我嘗試將ignore_malformed作爲ElasticSearch映射中字段的屬性。ElasticSearch:ignore_malformed無法正常工作

EClient.indices.putMapping(
    { 
    index: 'activities', 
    type: 'user', 
    body: { 
     properties: { 
     meta: { 
      type: 'object', 
      ignore_malformed: true, // meta is dynamic 
     }, 
     }, 
    }, 
    }, 
    (err, res) => { 
    console.info('Put Mapping Error:', err); 
    console.info('Put Mapping Res:', res); 
    } 
); 

但是我得到了response: '{"error":{"root_cause":[{"type":"mapper_parsing_exception","reason":"Mapping definition for [meta] has unsupported parameters: [ignore_malformed : true]"}],"type":"mapper_parsing_exception","reason":"Mapping definition for [meta] has unsupported parameters: [ignore_malformed : true]"},"status":400}',

根據文檔:ignore_malformed它應該工作。 有人能告訴我我的代碼有什麼問題嗎?

回答

1

撰寫的文檔不準確,如here所述。我試着用ignore_malformed參數進行試驗,發現它不適用於字符串和對象類型,儘管它與預期的整數一起使用。您可能可以爲彈性搜索提出票或使用此link中討論的解決方法。

2

嘗試enabled: false而不是ignore_malformed的對象。這確保了該字段可以具有任意的內部結構(但是它不能被搜索到)。

+0

正好。這是我在答案中發佈的鏈接中討論的解決方法之一。 –