Elasticsearch 6 新特性与重要变更解读

2017年11月14日,Elastic Stack 6.0正式亮相,这篇文章总结Elasticsearch 6.0版本的一些新的特性和重要改变,根据官网文档,变更部分包括下列部分,下面一一说明。

Aggregations changes
Cat API changes
Clients changes
Cluster changes
Document API changes
Indices changes
Ingest changes
Java API changes
Mapping changes
Packaging changes
Percolator changes
Plugins changes
Reindex changes
REST changes
Stats and info changes
Search and Query DSL changes
Settings changes
Scripting changes

一、Mapping changes

1.规范布尔类型的取值

Elasticsearch 6.0 之前的版本中,布尔类型的取值可以是 true, false, on, off, yes, no, 0, 1等,6.0之后只接受true和false,否则会抛出异常。

2.默认关闭_all元字段

_all字段可以包含其它字段的内容,作为超级字段做模糊(这里的模糊指不清楚搜索哪个字段的情况)搜索,Elasticsearch 6.0开始 _all字段默认关闭。

3.include_in_all失效

因为_all字段默认关闭,索引的mapping中也不再支持include_in_all。

二、Document API changes

2.1 版本类型移除force

2.2 upserts操作不再支持版本

2.3 index api中移除created 字段

2.4 delete api中移除found字段

三、Indices changes

3.1 索引模板使用index_patterns取代template

最新的设置索引模板的方法:

PUT _template/template_1
{
  "index_patterns": ["te*", "bar*"],
  "settings": {
    "number_of_shards": 1
  }
}
PUT _template/template_2
{
  "index_patterns": "te*",
  "settings": {
    "number_of_shards": 1
  }
}

3.2 Shadow replicas移除

没什么用,已经移除。下面这几个配置没有用了:

  • index.shared_filesystem
  • index.shadow_replicas
  • node.add_lock_id_to_custom_path

3.3 索引开关API的改变

Open/Close index API允许通配符为空。之前通配符匹配为空时会报错,现在返回结果默认返回true,换句话说,通配符没有匹配任何索引也不会报错。

四、client changes

Java High Level Client

从5.6版本开始,发布了Java High Level Client,使用Java High Level Client可以对Elasticsearch执行search, index, delete, update和bulk操作,和TransportClient 使用相同的Java核心类库。
Java High Level Client的设计目标是在未来取代TransportClient 。

五、cluster changes

path.data中不允许出现索引名

6.0之前的版本中path.data出现索引名会报warning,6.0之后不再支持。
假设path.data是: /tmp/mydata

之前:

$ tree /tmp/mydata
/tmp/mydata
├── <cluster_name>
│   └── nodes
│       └── 0
│           └── <etc>

6.0之后:

$ tree /tmp/mydata
/tmp/mydata
├── nodes
│   └── 0
│       └── <etc>

六、Java API Changes

6.1 setSource方法需要指定XContentType 类型

6.0之前setSource方法可以不指定XContentType 类型,自动检测机制已经不再使用,6.0之后必须指定XContentType 类型。

6.2 DeleteByQueryRequest 必须显示指定一个query

6.0之前DeleteByQueryRequest 不指定query默认使用match all,很明显这种方式存在误删除的缺陷,6.0之后必须明确指定query。

https://www.elastic.co/guide/en/elasticsearch/reference/current/breaking-changes.html

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

esc_ai

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值