弹性搜索not_analyzed索引的dynamic_templates

时间:2015-12-29 04:10:45

标签: elasticsearch lucene mapping

我正在尝试为Elastic Search中的一个索引创建映射。 对于我的文档的大多数元素,动态映射足够好。但是对于我的维度对象中的每个键,我需要一个not_analyzed索引。

一个文件的例子:

{"key1":"value1",
"dimensions":   {"563a92a1b7f2b700196bd3cd":"G1",
                  "43214b7f2b700196bd3432":4321}}

在这种情况下,我想要动态映射key1,但我的维度都没有被分析。诀窍是我事先不知道尺寸的关键。所以我使用的是动态模板。

到目前为止我所拥有的:

{
    "dynamic_templates": [
      {
        "dimensions": {
          "match": "dimensions.*",
          "match_mapping_type": "string",
          "mapping": {
            "type": "string",
            "index": "not_analyzed"
          }
        }
      }
    ]
  } 

但它不起作用。 有什么想法吗?

感谢

1 个答案:

答案 0 :(得分:1)

在尝试匹配另一个对象中字段的名称时,您实际上需要使用path_match parameter而不是match。因此,您的动态模板应如下所示:

{
    "dynamic_templates": [
      {
        "dimensions": {
          "path_match": "dimensions.*",           <--- fix this line
          "match_mapping_type": "string",
          "mapping": {
            "type": "string",
            "index": "not_analyzed"
          }
        }
      }
    ]
  }