ElasticSearch6.0版本变化

官方文档地址:https://www.elastic.co/guide/en/elasticsearch/reference/6.0/breaking-changes-6.0.html
本博客是对官方文档的简单翻译,如有翻译错误或理解错误,欢迎留言评论。

分界线===========================================================

突破性的变化

  1. 6.0版本之前创建的索引:ES6.0可以读取在5.0或更高版本中创建的索引。ES6.0创建的索引不会在ES5.0或之前版本中启动。
  2. 重新索引ES2.x或之前的索引:在ES2.x或更早版本中创建的索引需要使用ES5.x重新建立索引,以便ES6.x能够读取。
  3. 在6.0中索引的mapping不支持多个类型:每个索引具有多个映射类型的特性已在6.0中移除。新索引将限制为单个类型。在5.x中创建的索引将继续支持多种映射类型。
  4. 聚合变化
    a) 移除term聚合中的include/exclude参数中的partten元素,即"include": {“pattern”: "foo." }由"include": "foo."替换。
    b) 日期范围聚合中的数字”to”和”from”参数现在按格式解析;
  5. Cat API变化
    cat线程池中的无边界队列大小:旧版本支持线程池的队列大小未绑定,则cat线程池api将在queue_size列中输出一个空字符串。ES6.0改为输出-1,以便输出始终存在且为数字。
  6. 客户端变化
    Java高级REST客户端:自ES5.6版本发布的Java客户端。这个正式的高级客户端(将其与现有的低级别客户端区别开来),采用与TransportClient同样的核心Java类来执行搜索、索引、删除、更新和批量操作。该客户端用于替代传输客户端。
  7. 集群变化:path.data中不再允许使用群集名称;
  8. Document API变化
    a) 移除force版本类型:文档修改操作可能不再指定force的version_type来覆盖任何以前的版本检查;
    b) upsert操作不再支持更新版本;
    c) 在Index API中删除created字段:已在Index API中删除created字段,与index和create批量操作中的字段相同。应改为operation字段;
    d) 在Delete API删除found字段:已在Delete API中删除found字段,与delete批量操作中的字段相同。应改为operation字段;
  9. 索引变化
    a) 索引模板使用index_patterns替换template;
    b) Shadow Replicas已移除:包括配置index.shared_filesystem,index.shadow_replicas,node.add_lock_id_to_custom_path;
    c) 打开/关闭索引API默认允许不匹配任何索引的通配符表达式:可修改allow_no_indices参数;
    d) 删除文档:从不存在的索引中删除文档已被修改为不创建索引。但是,如果使用外部版本控制,则将创建索引,并将文档标记为删除;
    e) 索引别名API仅针对索引解析索引表达式:更新别名、新建别名和删除别名API中的索引参数不再接受别名。相反,它只接受索引名(或将扩展到匹配索引的通配符)。
    f) 删除索引API仅针对索引解析索引表达式:删除索引API中的索引参数不再接受别名。相反,它只接受索引名(或将扩展到匹配索引的通配符)。
    g) 索引表达式中已删除对+的支持;
    h) Translog保留:Translog文件现在最多保留12小时(默认情况下),最大大小为512MB(默认值),刷新时不再删除。这是为了提高基于恢复的操作机会,将复制副本的速度提高;
  10. Ingest变化
    a) 更改时间戳元数据字段类型:”timestamp”元数据字段的类型已从java.lang.string更改为java.util.date;
    b) 字符串格式的invest.timestamp字段的格式已更改:由于ES5.4.0,您需要使用ingest.new_date_format来对inkest.timestamp元数据字段进行格式化,这样ES就可以直接将其强制转换为date类型的字段。当前此设置已被删除。现在,您只需在管道中将字段设置为ingest.timestamp,并使该字段的类型为date,就不会出现映射错误。
  11. Java API变化
    a) setSource方法需要XContentType:旧版本SetSource方法和其他方法接受byte/string表示对象源,不需要指定XContentType。当前不再使用内容类型的自动检测,因此当以byte/string形式提供源时,这些方法现在需要xContentType作为附加参数。
    b) DeleteByQueryRequest需要明确的设置查询:在早期版本的ES中,接受了不带显式查询的按查询删除请求,使用match_all作为默认查询,因此删除了所有文档。从版本6.0.0开始,DeleteByQueryRequest需要明确的设置查询。
    c) 移除InternalStats和Stats中的getCountAsString()方法;
    d) ActionRequestBuilder#execute返回ActionFuture而不是ListenableActionFuture;
    e) Terms.order和Histogram.order类替换为Bucketorder类;
    f) 在BulkResponse、SearchResponse和TermVectorResponse类中删除了gettookinMillis()方法,可以使用gettook().getMillis()替换;
    g) GetField和SearchHitfield替换为DocumentField;
    h) 部分聚合类位置变动:geo_distance, date和ip迁移至org.elasticsearch.search.aggregations.bucket.range包;org.elasticsearch.search.aggregations.bucket.terms.support包被移除,包中类迁移至org.elasticsearch.search.aggregations.bucket.terms包;过滤聚合类迁移至org.elasticsearch.search.aggregations.bucket.filter包。
    i) PercentileRanksAggregationBuilder的构造函数已更改:现在将所需的列组作为一个非空的双精度数组包含到构建器的构造函数中,而不是通过构建器上的setter来配置它们。相应地,setter方法values()已被移除。
  12. Mapping变化
    a) 强制布尔字段:旧版本ES将字符串true、false、on、off、yes、no、0、1识别为布尔值。ES6.0只将字符串true和false识别为布尔值,否则将抛出错误。为了向后兼容,在6.x系列中,以前的强制规则将继续在6.0之前的索引上工作。
    b) 默认禁用_all元字段;
    c) 不接受include_in_all映射参数;
    d) 无法识别的match_mapping_type选项返回异常;
    e) 对日期字段进行区域设置验证;
  13. 安装包变化
    a) 不再允许为包配置自定义用户和组;
    b) path.conf变更为不可修改的设置;
    c) 不再支持conf_dir配置项:ES6.0变更为es_path_conf;
    d) 删除默认路径设置:path.data与path.logs需要进行配置;
    e) ES不再支持在32位JVM上启动运行;
    f) 不再支持windows服务中筛选-server标志(与不支持32JVM有关);
    g) 不支持ES_JVM_OPTION参数项:使用环境变量ES_PATH_CONF代替;
    h) 不再支持ES_INCLUDE;
    i) Heap dump默认路径:自ES6.0开始默认路径由/usr/share/elasticsearch调整为/var/lib/ElasticSearch;
  14. Percolator(过滤器)变化
    a) 移除Percolator和MPERClate API:使用search或msearch API替代;
    b) 设置项percolator.map_unmapped_fields_as_string已弃用:使用percolator.map_unmapped_fields_as_text替代;
  15. 插件变化
    a) 移除Mapper attachments插件:使用ingest attachment插件替代;
    b) S3 存储库插件:S3存储库配置的bucket将不再自动创建;移除指定区域;移除全局存储库;删除共享客户端设置;移除path_style_access设置;
    c) Azure存储库插件:不再自动创建用于配置Azure存储库的容器;repositories.azure目录下有关ES配置的全局存储库配置项已移除;
    d) GCS存储库插件:移除service_account配置项;
    e) EC2发现插件:移除指定EC2签名者类型;移除区域设置;移除所有cloud.aws.*和cloud.aws.ec2.*设置,改用discovery.ec2.*设置;
    f) 忽略隐藏文件夹:旧版本ES在扫描插件文件夹时会跳过隐藏的文件和目录;
    g) ICU分析插件:ICU4J库已升级到59.1,在以前的主要版本中创建的索引需要重新建立索引,以便返回正确的结果(和正确排序),并利用新字符;
    h) 插件不应根据settings构造environment实例;
  16. Reindex变化
    a) Size参数:大小参数不能再显式设置为-1。如果需要所有文档,则不应设置大小参数;
  17. REST变化
    a) 未引用的JSON:早期ES版本中JSON文档允许包含未加引号的字段名,在ES5.x中已移除,但通过系统属性elasticsearch.json.allow_unquoted_field_names添加了向后兼容层。ES6.0移除了向后兼容层。
    b) 在JSON、CBOR、Yaml和Smile中不允许有重复的key;
    c) Content-Type自动检测:ES6.0强制具有主体的所有请求必须具有受支持的Content-Type,并且在分析数据时将使用此类型;
    d) 布尔API参数:所有REST API参数(请求参数和JSON主体)都支持提供布尔值”false”作为值false,布尔值”true”作为值true。所有其他值都将引发错误;
    e) Analyze API变化:已删除不推荐使用的请求参数和请求正文中的纯文本。在请求主体中定义参数;
    f) Analyze API支持自定义normalizer:Analyze API 可以支持分析normalizer和自定义normalizer;
    g) 不再接收timestamp和ttl作为索引/更新请求的参数;
    h) 一个或多个分片失败的刷新请求返回500,而不是200;
    i) Delete By Query API变化:需要使用准确查询条件的请求;
    j) 调用DELETE index/type/id时,若type不存在会自动创建;
    k) 索引信息API:用于检索多条信息的逗号分隔已被删除;使用GET /_all获取所有索引的别名、设置和映射;
    l) 向存在但谓词不正确的端点发送http请求会返回405;
    m) 不允许使用_cache和_cache_key;
    n) indexclosedexception返回400状态代码;
  18. 状态和信息的变化
    a) 删除store中的throttle_time:由于已删除存储限制,存储状态不再报告限制时间;
    b) fs状态不再报告磁盘是否旋转;
  19. 搜索和查询的变化
    a) 查询变化:
     移除span_near查询中的collect_payloads参数;
     布尔字段只接受"true"和"false";
     移除in查询;
     移除geo_bbox查询;
     移除mlt查询;
     移除more_like_this查询like_text,ids和docs参数,以及参数min_word_len和max_word_len;
     移除fuzzy_match和match_fuzzy查询;
     terms查询返回分数为1且不受限于indices.query.bool.max_clause_count;
     移除indices查询;
     移除查询DSL中的{ };
     bool查询中使用minimum_should_match替换minimum_number_should_match;
     query_string查询根据max_determinized_states正确分析正则表达式的最大状态数;
     query_string查询使用enable_position_increments替代enable_position_increment;
     geo_distance查询、排序、聚合中的sloppy_arc已从distance_type参数移除;
     移除geo_distance_range查询;
     移除geo_distance查询中的optimize_bbox参数;
     geo_bounding_box、geo_polygon和geo_distance查询中移除ignore_malformed和coerce参数;
     移除bool和common_terms查询中的disable_coord参数;
     移除template查询;
     移除percolate查询的document_type参数;
     移除query_string查询的split_on_whitespace;
     移除query_string查询的use_dis_max参数;
     移除query_string查询的auto_generate_phrase_queries参数;
     移除query_string和simple_query_string查询的all_fields参数;
     terms过滤器中用于在专用索引中查找术语的index参数现在是必需的;
     移除match查询中的type和slop参数,应使用match_phrase或match_phrase_prefix替代type设置,match_phrase和match_phrase_prefix查询仍然支持slop参数;
     移除match_phrase查询中的phrase_slop参数;
     移除constant_score查询中query参数;
     移除multi_match查询中的phrase_slop参数;
     移除prefix查询中的prefix参数;
     移除range查询中的le和ge参数;
     移除ids查询中type参数的同类参数types和_type;
     已删除已弃用的多术语重写参数constant_score_auto、constant_score_filter(constant_score的同义词);
    b) Search shards API
    不再接受type的url参数;
    c) Profile API变化
    time_in_nanos替代time;在url请求中增加"?human=true"以提高可读性;
    d) 打分变化
     移除查询规范化:这意味着TF-IDF的相似性不再试图使查询之间的得分具有可比性,而现在权重作为简单的乘法因子融入到得分中。
     从评分公式中移除协调因素:这意味着布尔查询不再基于匹配子句的数量来计分。相反,它们总是返回匹配子句的分数之和。
    e) 移除_uid上的Fielddata:如果确实需要访问用于排序、聚合或搜索脚本的文档ID,建议将该ID复制为文档中的字段;
    f) Highlighters(高亮):统一的高亮器是高亮器新的默认选择。每个字段的偏移策略由该高亮器内部选择,具体取决于字段类型(索引选项)。仍然可以强制指定高亮器为FVH或普通类型;
    g) 移除了fielddata_fields:使用docvalue_fields替代;
    h) docvalue_fields默认上限为100:但可以通过index.max_docvalue_fields_search改变设置;
    i) script_fields默认上限为32:但可以通过index.max_script_fields index改变设置;
    j) Inner hits:相对于整个源保持其完整路径,旧版本中,源字段名是相对于Inner hit的;
    k) 当启动scroll时,From参数不能再用于搜索请求正文中。在这些情况下,参数已被忽略,现在还会抛出错误。
    l) top hits和inner hits的from和siz存在限制:默认限制为100,但是可以通过index.max_inner_result_window修改;
    m) 移除使用请求缓存的滚动查询;
  20. 设置变化
    a) 移除对elasticsearch.json和elasticsearch.yaml文件的支持,只支持elasticsearch.yml;
    b) 不允许存在重复的key;
    c) 强制布尔设置:只接受true和false;
    d) 移除快照设置cluster.routing.allocation.snapshot.relocation_enabled;
    e) 已删除存储限制:不再识别indexs.store.throttle.type、indexs.store.throttle.max_bytes_per_sec、index.store.throttle.type和index.store.throttle.max_bytes_per_sec;
    f) 存储设置:移除默认的index.store.type;
    g) 已删除阻止TCP客户端、阻止TCP服务器和阻止HTTP服务器;不再识别network.tcp.blocking_server、network.tcp.blocking_client、network.tcp.blocking、transport.tcp.blocking_client、transport.tcp.blocking_server和http.tcp.blocking_server设置;先前未使用的设置transport.netty.max_cumulation_buffer_capacity、transport.netty.max_composite_buffer_components和http.netty.max_cumulation_buffer_capacity已被删除;
    h) 由于坐标和查询规范化已被删除,base相似性被忽略;
    i) 已删除所有现有脚本的安全设置,使用script.allowed_types和script.allowed_contexts替换;script.max_compilations_rate替换script.max_compilations_per_minute,如75/5m;
    j) discovery.type设置不再支持值gce、aws和ec2;
  21. 脚本变化
    a) 移除了groovy、javascript和python语言,只使用painless脚本;
    b) 移除本地脚本,通过实现脚本引擎来实现;
    c) 移除文件脚本,使用存储的脚本。关联的设置path.scripts也已删除;
    d) 日期字段现在返回日期,doc.some_date_field.value现在返回ReadableDateTime,而不是从epoch开始的毫秒数;若需要返回毫秒数,请使用doc.some_date_field.value.millis;
    e) 移除_index变量:如果您使用它进行高级评分,请考虑编写一个similarity插件
    f) 已删除所有现有的脚本安全设置。取而代之的是script.allowed_types和script.allowed_contexts;
    g) 当将存储脚本用作请求的一部分时,不能再指定lang;
    h) “lang”不能再用于放置、获取或删除存储的脚本;
    i) 移除存储搜索模板相关API;
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值