创建ElasticSearch动态模板以确保将所有字段设置为not_analyzed

时间:2015-07-07 22:46:05

标签: elasticsearch

我有一个ElasticSearch类型,我想要动态设置映射。我希望分析该类型的一些选择字段,但其他所有字段都应设置为" not_analyzed"。

我提出了以下代码段。这会将所有字符串字段设置为不进行分析,但不涵盖所有其他数据类型。我尝试使用" generic"文档中显示的字段但它没有帮助。谁能告诉我如何才能做到这一点?

{
  "TypeName": {
    "dynamic_templates": [
      {
        "template_name": {
          "match": "*",
          "match_mapping_type": "string",
          "mapping": {
            "index": "no",
            "type": "string"
          }
        }
      }
    ],
    "dynamic": true,
    "properties": {
      "url": {
        "index": "analyzed",
        "type": "string"
      },
      "resourceUrl": {
        "index": "analyzed",
        "type": "string"
      }
    }
  }
}

1 个答案:

答案 0 :(得分:3)

{
  "mappings": {
    "TypeName": {
      "dynamic_templates": [
        {
          "base": {
            "mapping": {
              "index": "not_analyzed"
            },
            "match": "*",
            "match_mapping_type": "*"
          }
        }
      ],
      "dynamic": true,
      "properties": {
        "url": {
          "index": "analyzed",
          "type": "string"
        },
        "resourceUrl": {
          "index": "analyzed",
          "type": "string"
        }
      }
    }
  }
}

总体而言,索引级模板:

{
  "mappings": {
    "_default_": {
      "dynamic_templates": [
        {
          "base": {
            "mapping": {
              "index": "not_analyzed"
            },
            "match": "*",
            "match_mapping_type": "*"
          }
        }
      ]
    }
  }
}