Es5.x版本研究

Elasticsearch 5.0引入大量改进和新功能,如block k-d tree优化数值和地理位置字段,新增half_float和scaled_float字段类型,text和keyword取代string类型,支持dots-in-fieldnames。此外,索引性能提升,Ingest Node处理数据预处理,Painless脚本语言增强安全性,检索和聚合操作优化,Java REST client发布,用户友好性提升,包括rollover和shrink APIs,以及集群健壮性的改进。
摘要由CSDN通过智能技术生成

概述

Elasticsearch 5.0.0 GA, 基于Lucene 6.2.0。Elasticsearch 5.0.0 带来了大量的改进和新功能,与之前的版本相比更快、更安全、更具有弹性,也更容易使用。

本文主要分为两部分。第一部分从整体上,了解Es5.x版本的新特性及进行这些改变的初衷。第二部分从具体功能细节了解新版本的改变。

新的数据结构

block k-d tree

Lucene 6.x针对 numeric and geo-point 字段添加了新的点型数据结构 ——dimensional points Fields,多维浮点字段。该数据结构使用基于k-d树的地理空间数据结构来提供快速的单维或多维数值范围和地理空间点的过滤。

数据结构采用的是改进的k-d树——block k-d tree 。block k-d tree 对IO效率做了特殊处理,使得大部分数据结构驻留在磁盘块上,在搜索时,使用小的堆内二叉树索引结构来定位块。

这意味着最终能够使用Lucene来有效地索引和范围过滤任何可以被编码为固定长度,有序字节的东西,比如IPv6 InetAddress,BigInteger,BigDecimal等,以及2D和3D或更高维度的地理空间索引和时间序列值。

对于数值型(IP,时间,数值)和geo_point的性能有很大的提高。

half_float 和 scaled_float

添加了两个新的数值字段类型 half_float 和 scaled_float

  • half_float : 16位的半精度浮点型。
  • scaled_float:固定比例的浮点型。内部存储为long。该字段类型需要指定比例因子scaling_factor。
PUT my_index
{
  "mappings": {
    "my_type": {
      "properties": {
        "number_of_bytes": {
          "type": "integer"
        },
        "time_in_seconds": {
          "type": "half_float"
        },
        "price": {
          "type": "scaled_float",
          "scaling_factor": 100
        }
      }
    }
  }
}

例如:
scaled_float 若比例因子为10,则2.34 会存储为23 ,所有的搜索操作(queries, aggregations, sorting) 会匹配文档中的2.3。 高的比例因子scaling_factor会提高精度,但是也会增加存储负担。

text和keyword类型

string类型移除,被Text和Keyword两种类型代替。

  • text 类型的数据用于全文检索(analyzed string)
  • keyword类型的用于关键词完全匹配搜索(not_analyzed string )。

    新的默认类型

索引如下内容:

{
  "foo": "bar"
}

新的默认创建的mapping如下:

{
  "foo": {
    "type" "text",
    "fields": {
      "keyword": {
        "type": "keyword",
        "ignore_above": 256
      }
    }
  }
}

既可以对foo字段全文检索, 也可以对foo.keyword实现关键词搜索和聚合。

可以通过指定string类型或动态模板(dynamic template )来禁用这个功能。
通过如下的动态模板来存储es2.x中的dynamic mappings

{
  "match_mapping_type": "string",
  "mapping": {
    "type": "text"
  }
}

原string类型迁移

原_1:

{
  "foo": {
    "type" "string",
    "index": "analyzed"
  }
}

新_1:

{
  "foo": {
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值