ElasticSearch-Nested 类型与 Object 类型的区别

在 Elasticsearch 中,nested 类型和 object 类型都用于处理嵌套的 JSON 数据,但它们在存储和查询方面有着显著的区别。本文将详细解释这两种类型的区别,并提供具体的示例。

一、基本概念

1. object 类型

  • 定义object 类型是 Elasticsearch 默认的嵌套类型,用于表示 JSON 对象。Elasticsearch 会自动将 object 类型的字段展平存储。

  • 存储方式 :Elasticsearch 会将 object 类型的字段展平,存储为多个独立的字段。例如,一个包含多个属性的对象数组会被展平为多个数组字段。

  • 查询方式 :可以直接使用普通的查询语句,通过点号(.)连接字段路径进行查询。

2. nested 类型

  • 定义nested 类型是一种特殊的 object 类型,每个嵌套对象会被索引为一个独立的隐藏文档。这允许对嵌套对象进行精确的查询和过滤。

  • 存储方式:每个嵌套对象被索引为一个独立的文档,存储时保持了对象的独立性。

  • 查询方式 :需要使用 nested 查询来查询嵌套对象。

二、具体区别

1. 存储方式

  • object 类型 :Elasticsearch 会将 object 类型的字段展平存储。例如,一个包含多个属性的对象数组会被展平为多个数组字段。这种展平存储方式可能会导致一些查询问题,特别是当需要对嵌套对象进行精确查询时。
  • nested 类型:每个嵌套对象被索引为一个独立的文档,存储时保持了对象的独立性。这使得对嵌套对象的查询更加精确和灵活。

2. 查询方式

  • object 类型 :可以直接使用普通的查询语句,通过点号(.)连接字段路径进行查询。
bash 复制代码
{
  "query": {
    "term": {
      "inspector.id": {
        "value": "222"
      }
    }
  }
}
  • nested 类型 :需要使用 nested 查询来查询嵌套对象。
bash 复制代码
{
  "query": {
    "nested": {
      "path": "inspector",
      "query": {
        "term": {
          "inspector.id": {
            "value": "222"
          }
        }
      }
    }
  }
}

3. 查询结果

  • object 类型 :由于 object 类型的字段被展平存储,有时会导致"且"查询变成"或"查询。例如,查询同时包含"欧莱雅"和"美白"的文档时,可能会返回不正确的结果。
  • nested 类型nested 类型的查询可以精确地匹配嵌套对象,避免了上述问题。例如,查询同时包含"欧莱雅"和"美白"的文档时,不会返回任何结果,因为没有任何一个嵌套对象同时具备这两个属性。

四、总结

  • object 类型:适用于简单的嵌套结构,数据被展平存储,不支持复杂的嵌套查询。
  • nested 类型:适用于需要复杂查询的嵌套结构,支持对嵌套对象的精确查询和过滤。

根据具体的业务需求选择合适的数据类型,以优化查询性能和数据建模的复杂性。如果需要对嵌套对象进行精确的查询和过滤,建议使用 nested 类型。如果嵌套结构简单,且不需要复杂的查询,可以使用 object 类型。

相关推荐
Databend10 分钟前
只看 PASS 会骗你,6 条 Agent Trace 里的 Coding Agent 评测真相
大数据·数据库·agent
数字新视界18 分钟前
动环监控可视化技术在机房管理智能化中的实际应用剖析
大数据·人工智能·数据中心·微模块机房·模块化机房
朴实赋能40 分钟前
AI拒答机制实战:心理咨询危机识别Agent三层防护、五级分层与六类智能体拆解
大数据·人工智能·多agent协同·心理咨询ai·心理危机识别·ai拒答机制·隐私匿名化
龙亘川1 小时前
智慧景区建设实践|文旅热度持续走高,景区如何把流量稳稳转化为口碑?
大数据·人工智能·科技·信息可视化·智慧城市
Elasticsearch2 小时前
Elastic Agent Builder 中能够引用证据的 AI 根因分析
elasticsearch
四方云2 小时前
低配4C4G服务器,10秒录音1秒转写!解决电销系统混合录音质检最大难题
大数据·人工智能·自动化·电销破局
paopao_djshddhdj2 小时前
钉钉企业支付详解:能力、场景与接入方式
大数据·钉钉
广凌股份(广凌科技)2 小时前
实验室安全检查包括哪些内容?智能管理平台筑牢校园实验安全防线
大数据·人工智能
wechatbot8883 小时前
SpringBoot Vue 企业微信多账号托管|扫码登录 代理 IP 消息回调
大数据·后端·微信·企业微信·ai编程
大大大大晴天️3 小时前
从数仓建模到 AI 数据底座:重新理解数据治理的位置
大数据·数据治理