我对 ES 文档感到困惑,实际上他们在这里声明索引必须放在映射目录(和 indexname 子目录)中:
映射可以在名为 [mapping_name].json 的文件中定义,并放置在 config/mappings/_default 位置或 config/mappings/[index_name] 下(对于应该仅与特定索引关联的映射)。
但是在“配置”部分中,它指出:
索引模板也可以放置在模板目录下的配置位置 (path.conf) 中(注意,确保将它们放置在所有符合条件的主节点上)。例如,一个名为 template_1.json 的文件可以放在 config/templates 下,如果它与索引匹配,它将被添加。
我把我的映射/config/mappings/myindexname/mappinfile.json
,它就像:
{
"template": "maincontentindex",
"settings": {
"index": {
"analysis": {
"analyzer": {
"htmlStrippingAnalyzer": {
"tokenizer": "standard",
"filter": ["standard", "lowercase"],
"char_filter": "html_strip"
}
}
}
}
},
"mappings": {
"rendition": {
"_timestamp": {
"enabled": true,
"store" : true
},
"properties": {
"key": {
"type": "string",
"store": "yes",
"analyzer": "keyword"
},
"parentPage": {
"type": "string",
"store": "yes",
"analyzer": "keyword"
},
"type": {
"type": "string",
"store": "yes",
"analyzer": "keyword"
},
"language": {
"type": "string",
"store": "yes",
"analyzer": "keyword"
},
"device": {
"type": "string",
"store": "yes",
"analyzer": "keyword"
},
"territory": {
"type": "string",
"store": "yes",
"analyzer": "keyword"
},
"channel": {
"type": "string",
"store": "yes",
"analyzer": "keyword"
},
"template": {
"type": "string",
"store": "yes",
"analyzer": "keyword"
},
"meta": {
"properties": {
"content": {
"type": "string",
"store": "yes"
}
}
}
}
}
}
}
如果我使用 REST Api 将它放在服务器中,它可以正常工作,如果我调用 /maincontentindex/rendition/_mapping 我只会得到上述结构(即使没有数据)。
但是对于目录,我只得到一个 404,如果我插入任何东西,它只是通常的动态映射。