ElasticSearch:ignore_malformed不起作用

时间:2017-08-17 07:11:00

标签: node.js elasticsearch

我试图将ignore_malformed放在ElasticSearch Mapping中的字段属性中。

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它应该有效。 是否有人可以告诉我我的代码有什么问题?

2 个答案:

答案 0 :(得分:2)

所写的文件并不像所讨论的here那样准确。我尝试使用ignore_malformed参数进行试验,发现它不能处理字符串和对象类型,尽管它可以按预期使用整数。您可以为elasticsearch提出一张票,或者使用此link中讨论的解决方法。

答案 1 :(得分:2)

为对象尝试enabled: false而不是ignore_malformed。这可以确保此字段可以具有任意内部结构(但是它无法搜索)