ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
# REST API改变 原文链接 : [https://www.elastic.co/guide/en/elasticsearch/reference/5.0/breaking_50_rest_api_changes.html](https://www.elastic.co/guide/en/elasticsearch/reference/5.0/breaking_50_rest_api_changes.html) 译文链接 : [http://www.apache.wiki/pages/viewpage.action?pageId=4260795](http://www.apache.wiki/pages/viewpage.action?pageId=4260795) 贡献者 : [片刻](/display/~jiangzhonglian) ## 严格的REST查询字符串参数解析 先前版本的Elasticsearch忽略无法识别的URL查询字符串参数。这意味着Elasticsearch将默认接受包含打印错误的无关参数或参数。这从最终用户的角度是危险的,因为这意味着所提交的请求将以不预期的方式执行。此宽容已删除,Elasticsearch现在将失败包含无法识别的查询字符串参数的任何请求。 ## 超过512字节的ID值被拒绝 当指定大于512字节的_id值时,请求将被拒绝。 ## /_optimize终结点删除 已弃用 /_optimize 端点已删除。应使用 /_forcemerge 端点来代替optimize。 /_forcemerge的GET HTTP动词不再受支持,请使用POST HTTP动词。 ## 索引创建端点仅接受PUT 以前可以通过调用PUT index_name或POST index_name来创建索引。只有前者现在支持。 ## HEAD {index} / {type}替换为HEAD {index} / _ mapping / {type} 用于检查类型是否存在的端点已经从{index}/{type}改为{index} /_ mapping/{type},以便在使用HEAD {index}/{id}时准备删除类型以检查文档是否存在于索引中。旧的端点将继续工作,直到6.0。 ## 从 /_cluster/stats响应中删除了mem部分 mem部分只包含总值,实际上是集群中所有节点可用的内存。该部分现在包含total,free,used,used_percent和free_percent。 ## /_cluster/stats返回的修订的节点角色聚合 客户机master_only,data_only和master_data字段已被删除,有利于master,data,ingest和coordinating_only。节点可以贡献多个计数,因为它可以有多个角色。每个节点都隐式地是协调节点,因此每当节点没有显式角色时,它将被计为仅协调。 ## 从 /_cluster/state 路由表中删除碎片版本信息 我们现在在集群状态中存储分片的分配ID,并使用它来选择主分片,而不是版本信息。 ## 节点角色不再是节点属性的一部分 节点角色现在在特定部分返回,称为角色,作为节点stats和节点信息响应的一部分。新部分是一个数组,包含每个节点实现的所有不同的角色。在数组返回为空的情况下,这意味着该节点是仅协调节点。 ## 禁止未引用的JSON 以前,允许JSON文档带有未引用的字段名称,这不是严格的JSON和打破一些Elasticsearch客户端。如果文档已在以前的Elasticsearch版本中用非引用字段编入索引,某些操作可能会抛出错误。为了伴随此,已注释掉的JVM选项已添加到jvm.options文件中:-Delasticsearch.json.allow_unquoted_field_names。 请注意,此选项仅用于迁移目的,将在Elasticsearch 6.0.0中删除。 ## 分析API改变 过滤器和char_filters参数已重命名为filter和char_filter。已删除token_filters参数。请改用滤镜。 ## DELETE  /_query端点已删除 删除按查询插件提供的DELETE / _query端点已删除,并被按查询删除API替换。 ## 创建存储脚本端点已删除 之前允许创建索引脚本的PUT / _scripts / {lang} / {id} / _ create端点已删除。索引脚本已替换为存储的脚本。 ## 创建存储的模板端点已删除 以前允许创建索引模板的PUT / _search / template / {id} / _ create端点已删除。索引模板已被预注册的模板替换。 ## 删除属性支持 一些REST端点(例如,集群更新索引设置)支持以Java属性格式(行分隔键=值对)检测内容。此支持已删除。 ## wait_for_relocating_shards现在是 /_cluster/health 中的wait_for_no_relocating_shards 用于获取数字的wait_for_relocating_shards参数现在只是一个布尔标记wait_for_no_relocating_shards,如果设置为true,则意味着请求将等待(直到配置的超时)集群在返回之前没有分片重定位。默认为false,这意味着操作不会等待。