我正在使用5.1版本学习ElasticSearch。我有一个索引" mycontent"和#34; simpledocument"。我遇到了错误" illegal_argument_exception没有为字段找到映射"在尝试检查simpledocument类型的建议/完成功能时。详情如下:
GET _search
{
"suggest":{
"my-suggestion":{
"prefix":"ap",
"completion":{
"field":"suggest"
}
}
}
}
这给了我答复:
{
"took": 4,
"timed_out": false,
"_shards": {
"total": 6,
"successful": 5,
"failed": 1,
"failures": [
{
"shard": 0,
"index": ".kibana",
"reason": {
"type": "illegal_argument_exception",
"reason": "no mapping found for field [suggest]"
}
}
]
},
......
映射确实包含建议字段:
GET _mapping/simpledocument
{
"mycontent": {
"mappings": {
"simpledocument": {
"properties": {
"description": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"id": {
"type": "integer"
},
"name": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"path": {
"type": "keyword"
},
"suggest": {
"type": "completion",
"analyzer": "simple",
"preserve_separators": true,
"preserve_position_increments": true,
"max_input_length": 50
},
"tags": {
"type": "keyword"
}
}
}
}
}
}
以下是一份示例文件:
GET mycontent/simpledocument/7
{
"_index": "mycontent",
"_type": "simpledocument",
"_id": "7",
"_version": 1,
"found": true,
"_source": {
"name": "Suggested Document",
"description": "this document does not contain a lot of content. Mainly used to test the suggest feature.",
"tags": [
"suggest",
"document"
],
"suggest": [
"and",
"design",
"api"
]
}
}
有人可以帮我弄清楚我的错误吗?为什么会这样说"没有找到映射"什么时候有映射?
答案 0 :(得分:3)
GET _search
会搜索所有索引,因为错误,它说索引.kibana
没有suggest
字段作为GET _mapping/simpledocument
,建议字段应仅存在于simpedocument
索引类型中。
所以也许你需要这样做:
GET mycontent/simpledocument/_search
{
"suggest":{
"my-suggestion":{
"prefix":"ap",
"completion":{
"field":"suggest"
}
}
}
}