elasticsearch 如何使用动态类型名编写Elasticsearch映射,elasticsearch,elasticsearch-5,elasticsearch,elasticsearch 5" /> elasticsearch 如何使用动态类型名编写Elasticsearch映射,elasticsearch,elasticsearch-5,elasticsearch,elasticsearch 5" />

elasticsearch 如何使用动态类型名编写Elasticsearch映射

elasticsearch 如何使用动态类型名编写Elasticsearch映射,elasticsearch,elasticsearch-5,elasticsearch,elasticsearch 5,我有一个称为测试执行的概念实体,每个测试执行都应该是Elasticsearch索引中的一个单独类型。每个测试执行类型的映射都应该相同,并将动态添加到索引中 我已经为一个测试执行创建了一个映射,如下所示,我想将它推广到将来将创建的所有类型 PUT /test_tool/_mapping/test_execution_20151710_1324_12 { "properties": { "timestamp":{

我有一个称为测试执行的概念实体,每个测试执行都应该是Elasticsearch索引中的一个单独类型。每个测试执行类型的映射都应该相同,并将动态添加到索引中

我已经为一个测试执行创建了一个映射,如下所示,我想将它推广到将来将创建的所有类型

PUT /test_tool/_mapping/test_execution_20151710_1324_12
{
    "properties": {
        "timestamp":{
            "type": "string",
            "index": "not_analyzed"
        },
        "source":{
            "type": "string",
            "index": "not_analyzed"
        },
            "payload":{
            "type": "string",
            "index": "not_analyzed"
        }
    }
}
我应该如何为动态类型创建一个通用映射,例如:为类型“test\u execution\”创建一个通配符

[更新] 在看了下面的答案之后,我考虑了不要对不同的执行使用不同的类型,并且希望使用一个单独的键来识别同一测试执行中的文档

PUT /test_tool/_mapping/executions
{
    "properties": {
        "timestamp":{
            "type": "string",
            "index": "not_analyzed"
        },
        "source":{
            "type": "string",
            "index": "not_analyzed"
        },
            "payload":{
            "type": "string",
            "index": "not_analyzed"
        },
            "test_execution":{
            "type": "string",
            "index": "not_analyzed"
        }
    }
}

您需要的是使用一个模板:

定义名为template_1的模板,模板模式为te*。设置和映射将应用于与te*模式匹配的任何索引名


因此,在您的情况下,您需要使用类似于:
“template”:“test_to*”

我不确定每次执行都有一个自己的类型是否是一个好主意(我不想这样做),因为这会破坏您的映射

您可以在索引模板中使用
\u default\u
类型来实现这一点,请参阅


但是,类型将在Elasticsearch的下一个版本中消失,因此您可能需要重新考虑该策略。

在您的示例中,索引具有通配符,我想要的是动态类型。您是说类型是文档类型,对吗?这就是发生的情况,每当您创建一个名为anything的索引的新类型,该索引从test_execution_开始,模板中使用的映射将自动应用。如果这不是你想要的,请编辑你的问题,使你想要的更清楚。对不起,如果我误解了,请纠正我,如果我错了。在我的例子中,我有一个名为“test_tool”的不变索引,它应该包含具有“test_execution”模式的类型_*“.这就是你的意思吗?哦..”。。好吧,我的错我错过了。。因此,在您的情况下,您只需创建类似“test_*”的模板,并且您在该索引下创建的任何类型都将自动应用模板映射,但方法是相同的。据我所知,您所说的是,我在创建的索引中输入的任何类型都将具有给定的映射。如果这是真的,那么类型名称如何硬编码为“type1”
   PUT _template/template_1
{
  "template": "test_too*",
  "settings": {
    "number_of_shards": 1
  },
  "mappings": {
    "type1": {
      "_source": {
        "enabled": false
      },
      "properties": {
        "host_name": {
          "type": "keyword"
        },
        "created_at": {
          "type": "date",
          "format": "EEE MMM dd HH:mm:ss Z YYYY"
        }
      }
    }
  }
}