2017-04-04 81 views
1

我的应用程序中的许多字符串字段需要在elasticsearch 5.3中动态映射。在ID或ID结束所有新的领域应该映射,并通过弹性自动建立索引,例如:更改动态映射Elasticsearch 5.3

"_my_propertyId": 
{ 
    "type": "keyword" 
} 

我定义的动态模板索引/类型这样

"mappings": { 
    "my_type": { 
     "dynamic_templates": [ 
      { 
       "id_as_keywords": { 
       "match": "*id|*Id|*Ids", 
       "match_mapping_type": "string", 
       "mapping": { 
        "type": "keyword" 
       } 
       } 
      } 
     ] 

然而,弹性依旧创建这样的属性:

 "_someIds": { 
      "type": "text", 
      "fields": { 
      "keyword": { 
       "type": "keyword", 
       "ignore_above": 256 
      } 
      } 
     } 

我不知道我在做什么错误或为什么这是目前动态字符串字段的默认映射。但是,我需要能够动态地映射所有以id或id结尾的属性作为关键字,而不需要ignore_above和完全索引,因此我可以使用searchAPI搜索它们。想法?为什么这是现在的默认字符串映射(我理解关键字/文本的介绍,但仍然)?

更新

上找到这些默认设置的好文章:

Strings

回答

1

可以使用match_pattern参数对match参数更多的控制。下文中找到更新的动态模板:

"dynamic_templates": [ 
      { 
      "id_as_keywords": { 
       "match_mapping_type": "string", 
       "match_pattern": "regex", 
       "match": ".*(id|Id|Ids)", 
       "mapping": { 
       "type": "keyword" 
       } 
      } 
      } 
     ] 

你可以阅读更多关于match_patternhere

+0

很好的回应。让我试试看。 – arturobelano

+0

工作完美!谢谢! – arturobelano