ElasticSearch 之 数据类型

这篇具有很好参考价值的文章主要介绍了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. 布尔类型使用boolean定义,用于业务中的二值表示,如商品是否售罄,房屋是否已租,酒店房间是否满房等。
  2. 写入或者查询该类型的数据时,其值可以使用true和false,或者使用字符串形式的"true"和"false"。

5. 日期类型

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

文章来源地址https://www.toymoban.com/news/detail-408381.html

到了这里,关于ElasticSearch 之 数据类型的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 如何使用 ffmpeg 对视频进行切分、合并

    1. 按照视频时间点进行截取, 起止点:00:00:06 ~ 00:20:36 ffmpeg -ss 00:00:06 -to 00:20:36 -accurate_seek -i \\\"input.mp4\\\" -avoid_negative_ts 1 -c copy \\\"ouput.mp4\\\" -y 2.  分离视频和音频 ffmpeg -i \\\"input.mp4\\\" -vcodec copy -an \\\"out-vod.mp4\\\" ffmpeg -i \\\"input.mp4\\\" -acodec copy -vn \\\"out-sound.m4a\\\"  3. 去除水印(指定区域模糊化,以

    2024年02月09日
    浏览(39)
  • Elasticsearch keyword 中的 ignore_above配置项

    关于es mapping的keyword ignore_above配置项的解释如下: Do not index any string longer than this value. Defaults to  2147483647  so that all values would be accepted. 不会索引大于ignore_above配置值的数据,默认值 2147483647字符。注意:动态mappings中自动为256。 Strings longer than the  ignore_above  setting will not

    2024年02月07日
    浏览(40)
  • Elasticsearch 8.X 如何依据 Nested 嵌套类型的某个字段进行排序?

    这是来自社区的一个真实企业场景问题。 https://elasticsearch.cn/question/13135 如下所示, 希望在查出的结果后, 对结果进行后处理,对tags列表,根据depth进行排序。 Elasticsearch 能支持的排序方式罗列如下: 包含但不限于: 基于特定字段的排序 基于Nested对象字段的排序 基于特定

    2024年02月02日
    浏览(56)
  • 【MFC】10.MFC六大机制:RTTI(运行时类型识别),动态创建机制,窗口切分,子类化-笔记

    C++: ##是拼接 #是替换成字符串 这是MFC提供的运行时类信息的使用,如果我们自己创建一个类,如果想用这些方法,必须要满足三个条件: 这个类必须继承于CObject类 类内必须声明DECLARE_DYNAMIC 类外必须实现IMPLENENT_DYNAMIC 我们来看看是如何实现的: 这里给出RTTI的图,每一个类中

    2024年02月13日
    浏览(40)
  • Elasticsearch:Text vs. Keyword - 它们之间的差异以及它们的行为方式

    很多刚开始学习 Elasticsearch 的人经常会混淆 text 和 keyword 字段数据类型。 它们之间的区别很简单,但非常关键。 在本文中,我将讨论两者之间的区别、如何使用它们、它们的行为方式以及使用哪一种。 它们之间的关键区别在于,Elasticsearch 会在将 text 存储到倒排索引之前对

    2024年02月03日
    浏览(85)
  • spring-data-elasticsearch使用Sort排序时Please use a keyword field instead. ……异常解决

    核心提示在 Please use a keyword field instead. Alternatively, set fielddata=true on [dataTimestamp] in order to load field data by uninverting the inverted index. 待排序字段 dataTimestamp 没有为排序优化,所以无法排序,需要配置 FieldType.Keyword 或 fielddata = true ,可是代码中都配置了为什么还提示呢,往下看……

    2023年04月24日
    浏览(46)
  • ElasticSearch 之 数据类型

    keyword类型是不进行切分的字符串类型。这里的“不进行切分”指的是: 在索引时,对keyword类型的数据不进行切分,直接构建倒排索引; 在搜索时,对该类型的查询字符串不进行切分后的部分匹配。 keyword类型数据一般用于对文档的过滤、排序和聚合。 在现实场景中,keywo

    2023年04月09日
    浏览(35)
  • elasticsearch 数据类型详解

    此文章已收录至项目 Developer-Knowledge-Base 官方文档:这里这里 常见类型 binary :接受二进制值作为 Base64 编码的字符串。默认情况下,该字段不存储,也不可搜索,不能包含换行符 n boolean :布尔类型,可以接受 true 或 false ,可以使用字符串和直接到布尔类型,空字符串为

    2024年02月04日
    浏览(34)
  • ElasticSearch(一)数据类型

    Es数据类型分为基础数据类型和复杂类型数据,掌握ES数据类型才能进一步使用ES检索数据内容。 2.1.String类型 text:会被分词处理,用于全文检索,很少用于聚合处理(需要设置fielddata属性),不能用于排序 keyword:不可分词,用于精确搜索,过滤、排序、聚合等操作 1分期细粒

    2024年02月11日
    浏览(37)
  • Elasticsearch的数据类型与映射

    Elasticsearch是一个分布式、实时的搜索和分析引擎,它可以处理大量数据并提供快速、准确的搜索结果。在Elasticsearch中,数据类型和映射是两个重要的概念,它们在存储和查询数据时起着关键的作用。本文将深入探讨Elasticsearch的数据类型与映射,揭示其核心概念、算法原理、

    2024年02月19日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包