ElasticSearch 之 数据类型

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: ElasticSearch 之 数据类型

1. keyword类型

1.keyword类型是不进行切分的字符串类型。这里的“不进行切分”指的是:

  1. 在索引时,对keyword类型的数据不进行切分,直接构建倒排索引;
  2. 在搜索时,对该类型的查询字符串不进行切分后的部分匹配。

2.keyword类型数据一般用于对文档的过滤、排序和聚合。

3.在现实场景中,keyword经常用于描述姓名、产品类型、用户ID、URL和状态码等。keyword类型数据一般用于比较字符串是否相等,不对数据进行部分匹配,因此一般查询这种类型的数据时使用term查询。


2. text类型

1.text类型是可进行切分的字符串类型。这里的“可切分”指的是:

  1. 在索引时,可按照相应的切词算法对文本内容进行切分,然后构建倒排索引;
  2. 在搜索时,对该类型的查询字符串按照用户的切词算法进行切分,然后对切分后的部分匹配打分。

2.term搜索用于搜索值和文档对应的字段是否完全相等,而对于text类型的数据,在建立索引时ES已经进行了切分并建立了倒排索引,因此使用term搜索不到数据。一般情况下,搜索text类型的数据时应使用match搜索。


3. 数值类型

  1. ES支持的数值类型有long、integer、short、byte、double、float、half_float、scaled_float和unsigned_long等。
  2. 各类型所表达的数值范围可以参考官方文档。
  3. 为节约存储空间并提升搜索和索引的效率,在实际应用中,在满足需求的情况下应尽可能选择范围小的数据类型。比如,年龄字段的取值最大值不会超过200,因此选择byte类型即可。数值类型的数据也可用于对文档进行过滤、排序和聚合。


4. 布尔类型

  1. 在ES中,日期类型的名称为date。
  2. ES中存储的日期是标准的UTC格式。
  3. 一般使用如下形式表示日期类型数据:
  4. 格式化的日期字符串。
  5. 毫秒级的长整型,表示从1970年1月1日0点到现在的毫秒数。
  6. 秒级别的整型,表示从1970年1月1日0点到现在的秒数。
  7. 日期类型的默认格式为strict_date_optional_time||epoch_millis。其中,strict_date_optional_time的含义是严格的时间类型,支持yyyy-MM-dd、yyyyMMdd、yyyyMMddHHmmss、yyyy-MM-ddTHH:mm:ss、yyyy-MM-ddTHH:mm:ss.SSS和yyyy-MM-ddTHH:mm:ss.SSSZ等格式,epoch_millis的含义是从1970年1月1日0点到现在的毫秒数。

5.搜索日期型数据时,一般使用range查询。

  1. 日期类型默认不支持yyyy-MM-dd HH:mm:ss格式,如果经常使用这种格式,可以在索引的mapping中设置日期字段的format属性为自定义格式。

6. 数组类型

  1. ES数组没有定义方式,其使用方式是开箱即用的,即无须事先声明,在写入时把数据用中括号[]括起来,由ES对该字段完成定义。
  2. 当然,如果事先已经定义了字段类型,在写数据时以数组形式写入,ES也会将该类型转为数组。
  3. 数组类型的字段适用于元素类型的搜索方式,也就是说,数组元素适用于什么搜索,数组字段就适用于什么搜索。
  4. 例如,数组元素类型是keyword,该类型可以适用于term搜索,则该字段也可以适用于term搜索;


7. 对象类型

  1. 在实际业务中,一个文档需要包含其他内部对象。
  2. 例如,在酒店搜索需求中,用户希望酒店信息中包含评论数据。评论数据分为好评数量和差评数量。为了支持这种业务,在ES中可以使用对象类型。
  3. 和数组类型一样,对象类型也不用事先定义,在写入文档的时候ES会自动识别并转换为对象类型。
  4. 根据对象类型中的属性进行搜索,可以直接用“.”操作符进行指向。
  5. 当然,对象内部还可以包含对象。


8. 地理类型

  1. 移动互联网时代,用户借助移动设备产生的消费也越来越多。
  2. 例如,用户需要根据某个地理位置来搜索酒店,此时可以把酒店的经纬度数据设置为地理数据类型。
  3. 该类型的定义需要在mapping中指定目标字段的数据类型为geo_point类型。
相关实践学习
利用Elasticsearch实现地理位置查询
本实验将分别介绍如何使用Elasticsearch7.10版本进行全文检索、多语言检索和地理位置查询三个Elasticsearch基础检索子场景的实现。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
目录
相关文章
|
存储 JSON Ubuntu
Elasticsearch:理解 Percolator 数据类型及 Percolate 查询
Elasticsearch 是一款功能强大且功能丰富的搜索工具。本文将介绍一种小众的数据类型 Percolator ,同时介绍Percolate query的使用。 您需要基本了解 Elasticsearch,尤其是mapping和search。
6738 0
Elasticsearch:理解 Percolator 数据类型及 Percolate 查询
|
2月前
|
测试技术 定位技术 API
万字长文:一文彻底搞懂Elasticsearch中Geo数据类型查询、聚合、排序
万字长文:一文彻底搞懂Elasticsearch中Geo数据类型查询、聚合、排序
94808 140
|
存储 搜索推荐 大数据
大数据数据存储的搜索引擎Elasticsearch的数据类型的复杂类型
在使用搜索引擎Elasticsearch存储大数据时,了解其数据类型是非常重要的。除了基础数据类型之外,Elasticsearch还支持多种复杂数据类型,这些数据类型通常用于存储结构化数据和关联数据。在本文中,我们将会介绍Elasticsearch的复杂数据类型。
76 0
|
存储 自然语言处理 搜索推荐
大数据数据存储的搜索引擎Elasticsearch的数据类型的基础类型
在使用搜索引擎Elasticsearch存储大数据时,了解其数据类型是非常重要的。Elasticsearch支持多种数据类型,包括基础类型和复合类型。在本文中,我们将会介绍Elasticsearch的基础数据类型。
109 0
|
数据库 索引
|
存储 Java API
深入了解ElasticSearch的Nested数据类型
ElasticSearch中可以将数据以对象的方式存储并查询,但是ES底层的Lucene 没有内部对象的概念,因此如果通过默认的方式往ES中插入对象,ES会将对象层次结构扁平化为字段名称和值的简单列表。 比如下面这一段数据:
|
弹性计算 索引
【Elastic Engineering】Elasticsearch:使用 alias 数据类型来遵循 ECS (Elastic Common Schema)
Elasticsearch:使用 alias 数据类型来遵循 ECS (Elastic Common Schema)
272 0
【Elastic Engineering】Elasticsearch:使用 alias 数据类型来遵循 ECS (Elastic Common Schema)
|
弹性计算 API 索引
|
19天前
Elasticsearch安装配置文件
Elasticsearch安装配置文件
15 0