ElasticSearch 7.x 中,插入数据报错
问题描述
我使用的版本是 7.0.0, 由于 7.x 取消了 Type, 因此我是这么创建索引的:
$ curl -X PUT 'localhost:9200/accounts' -d '
{
"settings":{
"number_of_shards": 3,
"number_of_replicas": 1
},
"mappings": {
"properties": {
"user": {
"type": "text",
"analyzer": "ik_max_word",
"search_analyzer": "ik_max_word"
},
"title": {
"type": "text",
"analyzer": "ik_max_word",
"search_analyzer": "ik_max_word"
},
"desc": {
"type": "text",
"analyzer": "ik_max_word",
"search_analyzer": "ik_max_word"
}
}
}
}'
没有设定 Type(如果我设定 Type 则会报错),返回信息是创建成功:
{
"acknowledged": true,
"shards_acknowledged": true,
"index": "accounts"
}
接下来,我开始插入数据:
$ curl -X PUT 'localhost:9200/accounts/1' -d '
{
"user": "张三",
"title": "工程师",
"desc": "数据库管理"
}'
却提示我:
{
"error": "Incorrect HTTP method for uri [/accounts/1] and method [PUT], allowed: [POST]",
"status": 405
}
好吧,那我就换成 Post 方式咯:
$ curl -X POST 'localhost:9200/accounts/1' -d '
{
"user": "张三",
"title": "工程师",
"desc": "数据库管理"
}'
但是这样却提示:
{
"error": {
"root_cause": [
{
"type": "illegal_argument_exception",
"reason": "Rejecting mapping update to [accounts] as the final mapping would have more than 1 type: [_doc, 1]"
}
],
"type": "illegal_argument_exception",
"reason": "Rejecting mapping update to [accounts] as the final mapping would have more than 1 type: [_doc, 1]"
},
"status": 400
}
我不知道怎么就『多于一种类型』了。。。
之后我继续尝试,在 es 中,插入数据又分为指定文档id插入和自动产生文档id插入,上面的尝试中,我使用了 Put
请求和 Post
请求,做了 指定文档id插入 的尝试,都不成功,于是我又使用 Post
请求,看看能不能 自动产生文档id插入:
请求:
$ curl -X POST 'localhost:9200/accounts' -d '
{
"user": "张三",
"title": "工程师",
"desc": "数据库管理"
}'
响应:
{
"error": "Incorrect HTTP method for uri [/accounts] and method [POST], allowed: [DELETE, PUT, GET, HEAD]",
"status": 405
}
我。。。
求教,我现在应该怎么办
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
摘自 removal-of-types
指定ID的API是
PUT {index}/_doc/{id}
, 自动生成ID的API是POST {index}/_doc
。你的请求路径里少了/_doc
还是要看官方文档。
README