为字段的所有子字段设置'index'属性

时间:2015-01-14 07:18:23

标签: elasticsearch pyes

在尝试添加术语构面时,我面临的问题是术语被标记为单独的单词。例如,如果属性(字段)Kind的值为medium kind of shirtlarge kind of shirt,则字词变为 - mediumlargekindofshirt

要解决此问题,建议我更改映射以包含每个属性字段的"index": "not_analyzed"。问题是映射是动态生成的,例如 - :

"attributes": {
   "properties": {
      "kind": {
         "type": "string"
      },
      "color": {
         "type": "string"
      },
      "size": {
         "type": "string"
      }
   }
}

只需在"not_analyzed"内设置"attributes"位即可。有没有办法为attributes字段中的每个子字段设置索引属性?

1 个答案:

答案 0 :(得分:1)

感谢Andrei的评论,我能够弄清楚如何应用这个设置。

我在映射中添加了dynamic_templates部分,如下所示:

"dynamic_templates": [
    {
        "string_template": {
            "path_match": "attributes.*",
            "match_mapping_type": "string",
            "mapping": {
                "type": "string",
                "index": "not_analyzed"
            }
        }
    }
]

这样就可以了,现在每个"string"类型的子字段都将"index"设置为"not_analyzed"。这些条款不再被标记化。