在elasticsearch中为具有新类型的现有索引创建映射

时间:2014-08-17 23:48:37

标签: elasticsearch

我在elasticsearch的网站上发现了一篇文章,描述了如何“无需停机时重新编制索引”,但每次引入需要自定义映射的新元素时都不能接受(http://www.elasticsearch.org/blog/changing-mapping-with-zero-downtime/

有谁知道为什么我不能为现有索引创建映射,而是在elasticsearch中创建新类型?该类型尚不存在,为什么不呢?也许我错过了什么,这有可能吗?如果是这样,怎么能实现呢?

谢谢, 弗拉基米尔

2 个答案:

答案 0 :(得分:20)

这是一个在索引中创建两个类型映射的简单示例(一个接一个)

我使用 i1 作为索引, t1 t2 作为类型,

  1. 创建索引

    curl -XPUT "http://localhost:9200/i1"
  2. 创建类型1

    curl -XPUT "http://localhost:9200/i1/t1/_mapping" -d
    {
       "t1": {
          "properties": {
             "field1": {
                "type": "string"
             },
             "field2": {
                "type": "string"
             }
          }
       }
    }'
  3. 创建类型2

    curl -XPUT "localhost:9200/i1/t2/_mapping" -d'
    {
       "t2": {
          "properties": {
             "field3": {
                "type": "string"
             },
             "field4": {
                "type": "string"
             }
          }
       }
    }'
  4. 现在看一下映射(curl -XGET "http://localhost:9200/i1/_mapping"),看起来它正在发挥作用。

    希望这有帮助!!谢谢

答案 1 :(得分:2)

如果您使用的是Elasticsearch 6.0或更高版本,则索引只能具有一种类型。 因此,您必须为第二种类型创建索引,或者创建包含两种类型的自定义类型。

有关更多详细信息:Removal of multiple types in index

相关问题