Elasticsearch 数组值的存储详细介绍

news/2024/7/7 5:47:15 标签: elasticsearch, 大数据, 搜索引擎

     在Elasticsearch中,数组是一种可以存储多个值的字段类型,这些值可以是字符串、数字、对象或者其他数据类型。数组在Elasticsearch中的存储和查询是相对直接和简单的。以下是关于数组值存储的一些要点:

1. 数组字段映射

   在Elasticsearch中,你不需要特别指定一个字段是数组类型。Elasticsearch会自动识别字段的数据类型,如果字段包含多个值,它就会被识别为数组。

PUT /my_index
{
  "mappings": {
    "properties": {
      "tags": { 
        "type": "keyword"
      },
      "ratings": {
        "type": "integer"
      }
      // 其他字段映射
    }
  }
}

  在这个例子中,tags 是一个字符串数组,ratings 是一个整数数组。

2. 索引数组值

当你索引一个文档时,只需将数组直接作为字段值传入。

POST /my_index/_doc/1
{
  "tags": ["elasticsearch", "search", "nosql"],
  "ratings": [4, 5, 3]
}

   在这个例子中,我们给 tags 字段索引了一个字符串数组,给 ratings 字段索引了一个整数数组。

3. 查询数组值

   查询数组值时,Elasticsearch会将查询应用于数组中的每个独立值。例如,如果你想查找包含特定标签的文档,你可以使用 term 查询或者 terms 查询。

GET /my_index/_search
{
  "query": {
    "term": {
      "tags": "search"
    }
  }
}

GET /my_index/_search
{
  "query": {
    "terms": {
      "ratings": [4, 5]
    }
  }
}

    在第一个查询中,我们搜索任何 tags 数组中包含 "search" 的文档。在第二个查询中,我们搜索任何 ratings 数组中包含 4 或 5 的文档。

注意事项

 在使用数组字段时,需要注意以下几点:

  1. 性能考虑

   大数组可能会影响性能,因为Elasticsearch需要处理更多的数据。如果数组非常大,可能需要考虑使用嵌套类型或者其他数据结构。

  2. 不支持多级数组

  Elasticsearch不支持多级数组(数组的数组)。如果需要存储复杂的嵌套数组结构,应使用嵌套对象。

  3. 相同数据类型

  数组中的所有元素应该是相同的数据类型。混合不同的数据类型可能会导致未定义的行为或错误。

  4. 查询时的注意

   查询数组字段时,Elasticsearch会将查询条件应用于数组中的每个元素。这可能会导致返回更多的文档,因为只要数组中有一个元素匹配就会返回。

  5. 空数组和null值

  空数组会被忽略,不会被索引。如果字段值是null或者包含null的数组,null值会被忽略。

结论

    在Elasticsearch中,数组字段的处理是直观和灵活的。你不需要特别声明一个字段为数组类型,Elasticsearch会自动处理多值字段。数组可以存储不同类型的数据,包括字符串、整数、对象等。查询数组字段时,Elasticsearch会对数组中的每个元素应用查询条件。这种灵活性使得Elasticsearch非常适合处理复杂的数据结构,但是要注意查询数组字段时可能会对性能产生影响,特别是当数组很大时。


http://www.niftyadmin.cn/n/5338645.html

相关文章

.Net CSRF 跨站点请求伪造漏洞

问题背景:由于公司需要整改的老系统的漏洞检查,而系统使用的是.Net 4.6.1的框架,无法使用最新的.Net Core官网的文档解决。 解决方法:网上查了很多资料,有用 Referer 过滤器全局过滤请求头,也有用 http请求…

Codeforces Round 919 (Div. 2) A~E

A. Satisfying Constraints(模拟) 题意: 给出 n n n个限制条件,问有多少个数字 k k k同时满足这些限制条件。 限制条件分为以下三种: k k k必须大于等于给出的一些数字 x x x k k k必须小于等于给出的一些数字 x x x k k k不能与给出的…

Multi-Concept Customization of Text-to-Image Diffusion——【论文笔记】

本文发表于CVPR 2023 论文地址:CVPR 2023 Open Access Repository (thecvf.com) Github官方代码地址: github.com 一、Intorduction 最近的文本到图像模型能够根据文本提示生成高质量的图像,可以覆盖广泛的物体、风格和场景。尽管这些模型…

Kubernetes实战(十八)-Pod配置污点和容忍

1 污点 1.1 污点简介 亲和性调度的方式都是站在Pod的角度上,通过在Pod上增加属性来将Pod调度到到指定的节点上,其实也可以站在Node节点的角度上,通过给Node节点设置属性,来决定是否允许Pod调度过来,这就是污点。 No…

CTFhub-网站源码

CTFhub-Web-信息泄露-备份文件下载-网站源码 题目信息 解题过程 无脑爆破(笑 写个python脚本 import requests #这里的url是你的地址 url "http://challenge-67a05a3755f2610d.sandbox.ctfhub.com:10800/"list1 [web, website, backup, back, www, ww…

air001研究笔记.基于arduino快速开发简单项目

一、air001芯片简介 air001是厂商合宙推出的一款tssop封装的mcu芯片。支持swd与串口烧录,多面向简单的功能简单类别的电子产品,因为官方文档齐全上手简易,所以也特别适合非专业爱好者乃至于幼儿编程。芯片内置资源:AIR001芯片数据…

《WebKit 技术内幕》之五(1): HTML解释器和DOM 模型

第五章 HTML 解释器和 DOM 模型 1.DOM 模型 1.1 DOM标准 DOM (Document Object Model)的全称是文档对象模型,它可以以一种独立于平台和语言的方式访问和修改一个文档的内容和结构。这里的文档可以是 HTML 文档、XML 文档或者 XHTML 文档。D…

2023年总结我所经历的技术大变革

📢欢迎点赞 :👍 收藏 ⭐留言 📝 如有错误敬请指正,赐人玫瑰,手留余香!📢本文作者:由webmote 原创📢作者格言:新的征程,我们面对的不仅…