我在CentOS上安装了Elasticsearch 1.5.2作为服务。 我尝试使用PUT添加映射:
curl -XPUT $ES_HOST/my_index -d'
{
"mappings": {
"my_type": {
"properties": {
"field": {
"type": "nested"
}
}
}
}
}'
该请求正常工作并创建具有正确映射的新索引。
而不是手动放置映射我想在配置文件中存储服务器上的映射。为此我创建了文件/etc/elasticsearch/mappings/my_index/all_mappings.json
,其内容与之前的请求正文相同。之后,我尝试创建索引curl -XPUT $ES_HOST/my_index
,但发生错误
{
"error": "MapperParsingException[mapping [all_mappings]]; nested:
MapperParsingException[Root type mapping not empty after parsing!
Remaining fields: [mappings : {my_type={properties={field={type=nested}}}}]]; ",
"status": 400
}
我尝试删除config json中的mappings
字段,但没有任何更改。
答案 0 :(得分:1)
文件名是映射名称。因此,对于/mappings/my_index/all_mappings.json
,您应该将索引my_index
和type
称为all_mappings
。
此外,文件的内容应为:
{
"properties": {
"field": {
"type": "nested"
}
}
}
如上所述,请执行以下操作:
my_type.json
文件夹/etc/elasticsearch/mappings/my_index
文件
{
"properties": {
"field": {
"type": "nested"
}
}
}
PUT /test_my_index
GET /test_my_index/_mapping