我在尝试创建索引时收到异常以及映射。我正在向我的本地ElasticSearch实例(v.5.1.1)PUT
发布http://127.0.0.1:9200/indexname
,其中包含以下正文
{
"settings": {
"index": {
"number_of_replicas": "1",
"number_of_shards": "1"
}
},
"mappings": {
"examplemapping": {
"properties": {
"titel": {
"type": "text",
"index": false
},
"body": {
"type": "text"
},
"room": {
"type": "text",
"index": false
},
"link": {
"type": "text",
"index": false
}
}
}
}
}
我收到以下错误
{
"error": {
"root_cause": [
{
"type": "mapper_parsing_exception",
"reason": "No handler for type [text] declared on field [body]"
}
],
"type": "mapper_parsing_exception",
"reason": "Failed to parse mapping [examplemapping]: No handler for type [text] declared on field [body]",
"caused_by": {
"type": "mapper_parsing_exception",
"reason": "No handler for type [text] declared on field [body]"
}
},
"status": 400
}
从索引创建的文档中,应该可以创建索引,并同时创建一个或多个映射: https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-create-index.html
我已阅读https://www.elastic.co/guide/en/elasticsearch/reference/current/string.html并认为我正确使用了新的数据类型,但异常则另有说明。
非常感谢任何帮助。
感谢Val i的评论指向了正确的方向。实际上我没有使用版本5.1.1,而是版本2.4.3
那为什么会混淆?好吧,我一直在运行这两个版本(不是一次),并且使用相应的bat脚本启动并停止它们:
call es-2.4.3/bin/service.bat start
call es-5.1.1/bin/elasticsearch-service.bat start
似乎即使我一直在运行后者,它仍然是ES2.4.3。这可能是由于bat脚本中的逻辑引起的。
展望未来我会记住检查服务本身的版本响应,并且我必须找到适当的设置来运行多个版本的ElasticSearch。
感谢您的回答。
答案 0 :(得分:0)
我在 ElasticSeach 5.0.0 上尝试了你的设置,它运行良好,输出GET indexname
:
{
"indexname": {
"aliases": {},
"mappings": {
"examplemapping": {
"properties": {
"body": {
"type": "text"
},
"link": {
"type": "text",
"index": false
},
"room": {
"type": "text",
"index": false
},
"titel": {
"type": "text",
"index": false
}
}
}
},
"settings": {
"index": {
"creation_date": "1488892255496",
"number_of_shards": "1",
"number_of_replicas": "1",
"uuid": "GugRGgllQbCadCTj5oq4ow",
"version": {
"created": "5000099"
},
"provided_name": "testo"
}
}
}
}
另请注意,我肯定会建议您设置一个不同的"number_of_shards": "1"
值作为经验法则,考虑到Elasticsearch每个分片分配1个线程,因此分片越大,越慢文本搜索将是。现在还要记住,一些开销来自分配更多分片,所以不要过度分配"。有关详细信息,请参阅此post和this one。
答案 1 :(得分:0)
感谢Val i的评论指向了正确的方向。实际上我没有使用版本5.1.1,而是版本2.4.3
那为什么会混淆?好吧,我一直在运行这两个版本(不是一次),并且使用相应的bat脚本启动并停止它们:
call es-2.4.3/bin/service.bat start
call es-5.1.1/bin/elasticsearch-service.bat start
似乎即使我一直在运行后者,它仍然是ES2.4.3。这可能是由于bat脚本中的逻辑引起的。
展望未来我会记住检查服务本身的版本响应,我将不得不找到一个正确的设置来运行多个版本的ElasticSearch。
感谢所有投入的人!