前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ElasticSearch数据类型Arrays介绍

ElasticSearch数据类型Arrays介绍

作者头像
xdd
发布2022-07-12 14:25:03
1.6K0
发布2022-07-12 14:25:03
举报
文章被收录于专栏:java技术鸡汤java技术鸡汤
本篇短文主要介绍一下ElasticSearch中的数据类型Arrays的相关概念。

elasticsearch中,没有明确定义array类型,默认每个field都可以包含0个或者多个值。同一个array中的值的数据类型应该保持一致,比如:

  • 一个字符串array
代码语言:javascript
复制
["one","two"]
  • 一个integer类型的array:
代码语言:javascript
复制
[1,2]
  • 一个包含arrayarray:
代码语言:javascript
复制
[1,[2,3]]

等价于,

代码语言:javascript
复制
[1,2,3]
  • 一个object类型的array:
代码语言:javascript
复制
[{"name":"Mary","age":12},{"name":"John","age":10}]                

当自动增加一个field的时候,这个field中的第一个value决定了这个field的类型。

所有后续值必须具有相同的数据类型,或者至少必须能够将后续值强制转换为相同的数据类型。

Arrays不支持混合数据类型,比如:

代码语言:javascript
复制
[10,"some string"]

一个array是可以包含null值的,他会被配置的null_value替代或者忽略,一个空的array([]),是被当作一个missing field,也就是说这个field中是没有value的。

为了在文档中使用数组,不需要进行任何预配置,开箱即用地支持它们:

代码语言:javascript
复制
curl -X PUT "localhost:9200/my-index-000001/_doc/1?pretty" -H 'Content-Type: application/json' -d'
{
  "message": "some arrays in this document...",
  "tags":  [ "elasticsearch", "wow" ], 
  "lists": [ 
    {
      "name": "prog_list",
      "description": "programming list"
    },
    {
      "name": "cool_list",
      "description": "cool stuff list"
    }
  ]
}
'
curl -X PUT "localhost:9200/my-index-000001/_doc/2?pretty" -H 'Content-Type: application/json' -d'
{
  "message": "no arrays in this document...",
  "tags":  "elasticsearch",
  "lists": {
    "name": "prog_list",
    "description": "programming list"
  }
}
'
curl -X GET "localhost:9200/my-index-000001/_search?pretty" -H 'Content-Type: application/json' -d'
{
  "query": {
    "match": {
      "tags": "elasticsearch" 
    }
  }
}
'
多值字段和倒排索引

所有字段类型均支持开箱即用的多值字段,这是Lucene起源的结果。Lucene被设计为全文搜索引擎。为了能够在大文本块中搜索单个单词,Lucene将文本标记为单个术语,并将每个术语分别添加到倒排索引中。

这意味着默认情况下,即使是简单的文本字段也必须能够支持多个值。当添加其他数据类型(例如数字和日期)时,它们使用与字符串相同的数据结构,因此免费获得了多值。

对象数组

对象数组无法按预期工作:无法独立于数组中的其他对象查询每个对象。如果需要执行此操作,则应使用嵌套数据类型而不是对象数据类型。

本文就简单介绍了一些关于ES的Arrays的数据类型。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-11-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 java技术鸡汤 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 本篇短文主要介绍一下ElasticSearch中的数据类型Arrays的相关概念。
  • 多值字段和倒排索引
  • 对象数组
相关产品与服务
Elasticsearch Service
腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档