我在elasticsearch的网站上发现了一篇文章,描述了如何“无需停机时重新编制索引”,但每次引入需要自定义映射的新元素时都不能接受(http://www.elasticsearch.org/blog/changing-mapping-with-zero-downtime/)
有谁知道为什么我不能为现有索引创建映射,而是在elasticsearch中创建新类型?该类型尚不存在,为什么不呢?也许我错过了什么,这有可能吗?如果是这样,怎么能实现呢?
谢谢, 弗拉基米尔
答案 0 :(得分:20)
这是一个在索引中创建两个类型映射的简单示例(一个接一个)
我使用 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"
}
}
}
}'
现在看一下映射(curl -XGET "http://localhost:9200/i1/_mapping"
),看起来它正在发挥作用。
希望这有帮助!!谢谢
答案 1 :(得分:2)
如果您使用的是Elasticsearch 6.0或更高版本,则索引只能具有一种类型。 因此,您必须为第二种类型创建索引,或者创建包含两种类型的自定义类型。
有关更多详细信息:Removal of multiple types in index