我在elasticsearch的网站上发现了一篇文章,描述了如何"无需停机时重新编制索引",但每次引入需要自定义映射的新元素时,这都不是真的可以接受(http://www.elasticsearch.org/blog/changing-映射与零停机时间/)
有谁知道为什么我不能为现有索引创建映射,而是在elasticsearch中创建新类型?该类型尚不存在,为什么不呢?也许我错过了什么,这有可能吗?如果是这样,怎么能实现呢?
谢谢,弗拉基米尔
如果您使用的是Elasticsearch 6.0或更高版本,则索引只能具有一种type。因此,您必须为第二种类型创建索引或创建将包含这两种类型的自定义类型。
有关更多详细信息:删除索引中的多种类型
这是一个在索引中创建两个类型映射的简单示例(一个接一个)
我用i1作为索引,t1和t2作为类型,
创建索引
curl -XPUT "http://localhost:9200/i1"
创建类型1
curl -XPUT "http://localhost:9200/i1/t1/_mapping" -d { "t1": { "properties": { "field1": { "type": "string" }, "field2": { "type": "string" } } } }'
创建类型2
curl -XPUT "localhost:9200/i1/t2/_mapping" -d' { "t2": { "properties": { "field3": { "type": "string" }, "field4": { "type": "string" } } } }'
现在看一下mapping(curl -XGET "http://localhost:9200/i1/_mapping"
),看起来它正在发挥作用.
希望这可以帮助!!谢谢