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

Vla*_*mir 12 elasticsearch

我在elasticsearch的网站上发现了一篇文章,描述了如何"无需停机时重新编制索引",但每次引入需要自定义映射的新元素时,这都不是真的可以接受(http://www.elasticsearch.org/blog/changing-映射与零停机时间/)

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

谢谢,弗拉基米尔

pro*_*mer 21

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

我用i1作为索引,t1t2作为类型,

  1. 创建索引

    curl -XPUT "http://localhost:9200/i1"
    Run Code Online (Sandbox Code Playgroud)
  2. 创建类型1

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

    curl -XPUT "localhost:9200/i1/t2/_mapping" -d'
    {
       "t2": {
          "properties": {
             "field3": {
                "type": "string"
             },
             "field4": {
                "type": "string"
             }
          }
       }
    }'
    Run Code Online (Sandbox Code Playgroud)

现在看一下mapping(curl -XGET "http://localhost:9200/i1/_mapping"),看起来它正在发挥作用.

希望这可以帮助!!谢谢


Joy*_*ama 6

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

有关更多详细信息:删除索引中的多种类型