简单的Elasticsearch输入-拒绝映射更新最终映射将具有1种以上的类型:[_doc,doc]

时间:2019-06-10 11:11:05

标签: elasticsearch

我正在尝试将数据发送到elasticsearch,但是遇到一个问题,其中我的数字字段仅以字符串形式出现。这些是我采取的步骤。

第1步。添加索引和地图

PUT http://123.com:5101/core_060619/

{
  "mappings": {
    "properties": {
      "date": {
        "type":   "date",
        "format": "HH:mm yyyy-MM-dd"
      },
        "data": {
        "type":   "integer"
      }
    }
  }
}

结果:

{
    "acknowledged": true,
    "shards_acknowledged": true,
    "index": "core_060619"
}

第2步。添加数据

PUT http://123.com:5101/core_060619/doc/1

{
  "test" : [ {
    "data" : "119050300",
    "date" : "00:00 2019-06-03"
  } ]
}

结果:

{
    "error": {
        "root_cause": [
            {
                "type": "illegal_argument_exception",
                "reason": "Rejecting mapping update to [zyxnewcoreyxbl_060619] as the final mapping would have more than 1 type: [_doc, doc]"
            }
        ],
        "type": "illegal_argument_exception",
        "reason": "Rejecting mapping update to [zyxnewcoreyxbl_060619] as the final mapping would have more than 1 type: [_doc, doc]"
    },
    "status": 400
}

1 个答案:

答案 0 :(得分:1)

Elasticsearch 6.0.0+中最多只能有一种类型的文档。如果将文档类型设置为doc,则可以仅通过PUT http://123.com:5101/core_060619/doc/1PUT http://123.com:5101/core_060619/doc/2等来添加另一个文档。

Elasticsearch 6。+

PUT core_060619/
{
  "mappings": {
    "doc": {     //type of documents in index is 'doc'
     "properties": {
        "date": {
          "type":   "date",
          "format": "HH:mm yyyy-MM-dd"
        },
          "data": {
          "type":   "integer"
        }
      }
    }
  }
}

由于我们创建了具有doc类文档的映射,现在我们可以通过简单地添加/doc/_id来添加新文档:

PUT core_060619/doc/1
{
  "test" : [ {
    "data" : "119050300",
    "date" : "00:00 2019-06-03"
  } ]
}


PUT core_060619/doc/2
{
  "test" : [ {
    "data" : "111120300",
    "date" : "10:15 2019-06-02"
  } ]
}  

Elasticsearch 7。+

类型已删除,但您可以使用自定义类字段:

PUT twitter
{
  "mappings": {
    "user": {
      "properties": {
        "name": { "type": "text" },
        "user_name": { "type": "keyword" },
        "email": { "type": "keyword" }
      }
    },
    "tweet": {
      "properties": {
        "content": { "type": "text" },
        "user_name": { "type": "keyword" },
        "tweeted_at": { "type": "date" }
      }
    }
  }
}

PUT twitter/user/kimchy
{
  "name": "Shay Banon",
  "user_name": "kimchy",
  "email": "shay@kimchy.com"
}

PUT twitter/tweet/1
{
  "user_name": "kimchy",
  "tweeted_at": "2017-10-24T09:00:00Z",
  "content": "Types are going away"
}

Removal of mapping types