Elasticsearch模板未在elasticsearch 1.7

时间:2016-03-25 18:30:04

标签: elasticsearch

我创建了一个索引模板并将其插入我的本地elasticsearch商店。使用以下命令:



curl -XPUT localhost:9200/_template/media_template -d '
{
    "template" : "media_*",
    "mappings" : {
        "properties": {
           "media-type": {
                "type": "string"
            }
        }
    }
}




我已安装Elasticsearch-head,可以进入Info>模板,看看我的模板确实已创建。我假设一旦我有一个模板,那么我可以插入任何索引,其名称适合 media _ * 的正则​​表达式,即使该索引尚不存在。我希望能够使用索引模板自动创建索引。

当我尝试将记录插入尚未创建的索引,但是 media _ * 的有效正则表达式时,我收到错误消息。下面是我调用的insert语句,之后是错误。



$ curl -XPOST 'http://localhost:9200/media_2016_03_25/1' -d '
{
 	"media-type" : "audio"
}
'




错误:



{
  "error": "MapperParsingException[mapping [properties]]; nested: MapperParsingException[Root type mapping not empty after parsing! Remaining fields:   [media-type : {type=string}]]; ",
  "status": 400
}




我做错了什么?我误解了索引模板吗?如果索引不存在并且符合模板规范,他们是否应该能够自动创建索引?

我正在运行elasticsearch 1.7

1 个答案:

答案 0 :(得分:1)

您需要指定应用映射的类型以及创建文档时的类型。

试试这个:

curl -XPUT localhost:9200/_template/media_template -d '
{
    "template" : "media_*",
    "mappings" : {
        "my-document-type" : {
            "properties": {
               "media-type": {
                    "type": "string"
                }
            }
        }
    }
}

然后创建您的文档:

$ curl -XPOST 'http://localhost:9200/media_2016_03_25/my-document-type/1' -d '
{
    "media-type" : "audio"
}
'