Elasticsearch嵌套类型nested使用指南
Elasticsearch嵌套类型nested使用指南
嵌套类型nested的特点
- 可以存储数组对象
- 每个对象独立存储为隐藏的子文档
嵌套类型nested和object类型的区别和应用场景
nested
- 每个对象独立存储为隐藏的子文档
- 适合存储数组
- 查询的时候有特定的语法 nested查询 且字段要用对象.字段名
- 性能略低 因为要维护子文档
object
- 扁平化存储,数组中的对象相同字段会合并成数组
- 适合存储单层的json对象
- 查询的时候指定对象.字段名称即可
- 查询性能高
嵌套类型nested如何使用
索引结构
"properties" : {
"create_time" : {
"format" : "yyyy-MM-dd HH:mm:ss Z||yyyy-MM-dd HH:mm:ss||yyyy-MM-dd HH:mm:ss.SSS Z||yyyy-MM-dd HH:mm:ss.SSS||yyyy-MM-dd HH:mm:ss,SSS||yyyy/MM/dd HH:mm:ss||yyyy-MM-dd HH:mm:ss,SSS Z||yyyy/MM/dd HH:mm:ss,SSS Z||epoch_millis||yyyy-MM-dd",
"index" : true,
"type" : "date",
"doc_values" : true
},
"title" : {
"index" : true,
"type" : "text"
},
"users" : {
"type" : "nested",
"properties" : {
"sex" : {
"type" : "keyword"
},
"age" : {
"type" : "integer"
},
"username" : {
"type" : "keyword"
}
}
}
}
插入数据
POST cn_taoym_json_to_nested/_bulk
{"index":{}}
{"create_time":"2023-10-01 10:00:00","title":"第一条数据","users":[{"username":"user1","age":25,"sex":"male"}]}
{"index":{}}
{"create_time":"2023-10-02 14:30:00","title":"第二条数据","users":[{"username":"user2","age":30,"sex":"female"}]}
{"index":{}}
{"create_time":"2023-10-03 09:15:00","title":"第三条数据","users":[{"username":"user3","age":28,"sex":"male"},{"username":"user4","age":22,"sex":"female"}]}
{"index":{}}
{"create_time":"1696300800000","title":"第四条数据(时间戳格式)","users":[{"username":"user5","age":35,"sex":"male"}]}
{"index":{}}
{"create_time":"2023/10/05 16:45:00","title":"第五条数据(不同日期格式)","users":[{"username":"user6","age":27,"sex":"female"}]}
查询username为user3的数据
GET cn_taoym_json_to_nested/_search
{
"query": {
"nested": {
"path": "users",
"query": {
"term": {
"users.username": {
"value": "user3"
}
}
},
"inner_hits": {}
}
}
}
结果集
{
"took" : 2,
"timed_out" : false,
"_shards" : {
"total" : 4,
"successful" : 4,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : 1,
"max_score" : 0.9808291,
"hits" : [ {
"_index" : "cn_taoym_json_to_nested",
"_type" : "_doc",
"_id" : "EKfHp5gBCQbF-O0GPRhA",
"_score" : 0.9808291,
"_source" : {
"create_time" : "2023-10-03 09:15:00",
"title" : "第三条数据",
"users" : [ {
"sex" : "male",
"age" : 28,
"username" : "user3"
}, {
"sex" : "female",
"age" : 22,
"username" : "user4"
} ]
},
"inner_hits" : {
"users" : {
"hits" : {
"hits" : [ {
"_index" : "cn_taoym_json_to_nested",
"_type" : "_doc",
"_source" : {
"sex" : "male",
"age" : 28,
"username" : "user3"
},
"_id" : "EKfHp5gBCQbF-O0GPRhA",
"_nested" : {
"field" : "users",
"offset" : 0
},
"_score" : 0.9808291
} ],
"total" : 1,
"max_score" : 0.9808291
}
}
}
} ]
}
}
"inner_hits": {}的作用是将嵌套查询中复合预期的数据单独收集起来。source里面存储的是原数据,里面自然包含所有数据的
Elasticsearch嵌套类型nested使用指南的更多相关文章
- Exception in thread "main" SettingsException[Failed to load settings from [elasticsearch.yml]]; nested: ElasticsearchParseException[malformed, expected end of settings but encountered additional conte
D:\elasticsearch\elasticsearch-2.4.0\bin>elasticsearchException in thread "main" Settin ...
- 启动elasticsearch的时候报出Exception in thread "main" SettingsException[Failed to load settings from /usr/local/elasticsearch/config/elasticsearch.yml]; nested: MarkedYAMLException[while scanning a simple ke
故障现象: [elasticsearch@tiantianml- ~]$ /usr/local/elasticsearch/bin/elasticsearch Exception in thread ...
- 一个Elasticsearch嵌套nested查询的实例
创建索引和数据准备 PUT course PUT course/_mapping/course { "properties": { "course":{ &qu ...
- elasticsearch Java Client用户指南
这里使用的Java客户端版本是5.1.2,Elasticsearch的版本号也要是5.1.2,否则一些功能可能不支持. 之前介绍过Spring Data Elasticsearch,那里也是使用了本文 ...
- ElasticSearch 索引查询使用指南——详细版
我们通常用用_cat API检测集群是否健康. 确保9200端口号可用: curl 'localhost:9200/_cat/health?v' 绿色表示一切正常, 黄色表示所有的数据可用但是部分副本 ...
- ElasticSearch 索引查询使用指南
1.检测集群是否健康,我们通常用下面的命令.确保9200端口号可用: http://localhost:9200/_cat/health?v 或者 http://localhost:9200/_clu ...
- 初识Elastic search—附《Elasticsearch权威指南—官方guide的译文》
本文作为Elastic search系列的开篇之作,简要介绍其简要历史.安装及基本概念和核心模块. 简史 Elastic search基于Lucene(信息检索引擎,ES里一个index—索引,一个索 ...
- elasticsearch 权威指南Mapping(映射)
什么是映射 类似于数据库中的表结构定义,主要作用如下: 定义Index下字段名(Field Name) 定义字段的类型,比如数值型,字符串型.布尔型等 定义倒排索引的相关配置,比如是否索引.记录pos ...
- ES 15 - Elasticsearch中的数据类型 (text、keyword、date、geo等)
目录 1 核心数据类型 1.1 字符串类型 - string(不再支持) 1.1.1 文本类型 - text 1.1.2 关键字类型 - keyword 1.2 数字类型 - 8种 1.3 日期类型 ...
- elasticsearch版本控制及mapping映射属性介绍
学习elasticsearch不仅只会操作,基本的运行原理我们还是需要进行了解,以下内容我讲对elasticsearch中的基本知识原理进行梳理,希望对大家有所帮助! 一.ES版本控制 1.Elast ...
随机推荐
- obs学习之3——obs初始化、析构
在app的开发过程中,obs相关函数的使用顺序如下: 1.首先,初始化obs // 创建obs if ( !obs_startup( "en-US", nullptr, nullp ...
- Vue3+Ts笔记:基于element-UI 实现下拉框滚动翻页查询通用组件
element 提供了 el-select组件,并且支持远程搜索,但是对于数据量大需要翻页的场景并未提供相应配置,所以自己写了一个通用组件,作为记录 初始化控件,定义传入参数 将远程查询的接口封装为函 ...
- 【2020.11.17提高组模拟】数数(cuvelia) 题解
[2020.11.17提高组模拟]数数(cuvelia) 题解 题目描述 给你一个长度为n的序列\(a_1...a_n\).对于所有的\(k\in [1,n]\)选择序列中的\(k\)个数(下标为\( ...
- docker | Ubuntu16.04安装与卸载docker
安装docker sudo apt-get install docker-ce docker-ce-cli containerd.io 卸载docker apt-get purge卸载命令需要逐条执行 ...
- c#格式化字符串 toString()
1.使用 ToString 方法的默认格式设置 public class Automobile { public string Name { get; set; } = "小王"; ...
- 让AI操作powershell会发生什么
AI-win11-管理员 (中文) 具体项目:https://github.com/liluoyi666/AI-win11-Administrator.git 项目概述 本项目旨在让大语言模型(LLM ...
- harbor镜像仓库拉取所有镜像的信息(镜像版本,tag,大小,最后拉取时间)
# -*- coding: utf-8 -*- # author: yuhaohao import requests from requests.auth import HTTPBasicAuth f ...
- 一文读懂HyperWorks的耦合求解功能
Altair Engineering, Inc. 是世界领先的工程设计技术开发者,同时,也是一家具有全球深厚工程技术底蕴的优秀CAE工程咨询公司.Altair公司在CAE建模.有限元分析.可视化.结构 ...
- 混合von-misse分布
以下是混合 von Mises 分布的 C 语言实现,包含数据生成和 EM 算法参数估计.代码实现了核心数学逻辑,并附有详细注释. 1. 核心代码实现 (1) 头文件与宏定义 (mix_vonmise ...
- 将本地的jar包加到maven中,pom添加依赖
开发过程中经常遇到需要用某些http://maven.apache.org/中没有的jar包,这个时候可以用maven命令自己添加 通常这些jar包可以从其官网下载下来,然后用maven明天添加此ja ...