一次创建索引和映射时解析异常

时间:2017-03-07 12:08:26

标签: elasticsearch

我在尝试创建索引时收到异常以及映射。我正在向我的本地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。

感谢您的回答。

2 个答案:

答案 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个线程,因此分片越大,越慢文本搜索将是。现在还要记住,一些开销来自分配更多分片,所以不要过度分配"。有关详细信息,请参阅此postthis 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。

感谢所有投入的人!