使用Elasticsearch在同一索引中区分不同类型的文档
在使用Elasticsearch时,有时我们需要在同一个索引中存放不同类型的文档,并且这些文档的字段可能不一致。在早期版本中,我们可以使用types来实现,但在Elasticsearch 7.x及更高版本中,types概念已被弃用。本文将介绍如何在新的版本中使用标识字段和索引别名来实现这一需求。
一、创建索引和添加映射
首先,我们需要创建一个索引,并定义映射以包含不同类型文档的字段。
PUT /my_test_index
{"mappings": {"properties": {"doc_type": { "type": "keyword" },"field1": { "type": "text" },"field2": { "type": "integer" },"fieldA": { "type": "text" },"fieldB": { "type": "date" }}}
}
参考官方文档:Mapping - Elasticsearch
二、添加文档
接下来,我们添加一些文档,并在每个文档中使用doc_type
字段来标识文档类型。以下是一些包含假数据的文档示例:
POST /my_test_index/_doc/1
{"doc_type": "type1","field1": "值1","field2": 10
}POST /my_test_index/_doc/2
{"doc_type": "type2","fieldA": "值A","fieldB": "2023-06-16"
}POST /my_test_index/_doc/3
{"doc_type": "type1","field1": "值2","field2": 20
}POST /my_test_index/_doc/4
{"doc_type": "type2","fieldA": "值B","fieldB": "2023-06-17"
}
参考官方文档:Create Index - Elasticsearch
三、使用标识字段进行查询
在创建别名之前,我们可以直接使用doc_type
字段进行查询:
查询类型为type1
的文档:
GET /my_test_index/_search
{"query": {"term": { "doc_type": "type1" }}
}
查询类型为type2
的文档:
GET /my_test_index/_search
{"query": {"term": { "doc_type": "type2" }}
}
参考官方文档:Query DSL - Elasticsearch
四、创建索引别名并添加过滤器
为了方便查询,我们可以为索引创建别名,并为别名添加过滤器,这样可以在逻辑上将一个索引分成多个“虚拟索引”。
POST /_aliases
{"actions": [{"add": {"index": "my_test_index","alias": "type1_index","filter": { "term": { "doc_type": "type1" } }}},{"add": {"index": "my_test_index","alias": "type2_index","filter": { "term": { "doc_type": "type2" } }}}]
}
参考官方文档:Index Aliases - Elasticsearch
五、查询文档
我们可以使用别名来查询不同类型的文档,这样可以有效地区分和管理不同类型的数据。
查询类型为type1
的文档:
GET /type1_index/_search
{"query": {"match_all": {}}
}
查询类型为type2
的文档:
GET /type2_index/_search
{"query": {"match_all": {}}
}
六、对比新的做法和老的做法
在Elasticsearch 6.x及之前版本中,我们可以使用types来区分不同类型的文档:
PUT /my_index
{"mappings": {"type1": {"properties": {"field1": { "type": "text" },"field2": { "type": "integer" }}},"type2": {"properties": {"fieldA": { "type": "text" },"fieldB": { "type": "date" }}}}
}
然而,在Elasticsearch 7.x中,types概念被移除了,推荐使用标识字段和索引别名的方式来管理和区分不同类型的文档。
老的做法: 使用多个types在同一个索引中区分文档。优点是直观且易于管理,但已被弃用。
新的做法: 使用标识字段和索引别名来管理不同类型的文档。优点是符合最新的Elasticsearch版本,灵活性更高,但需要在文档设计和查询时额外注意区分。
如果对你有帮助的话点个赞呗~
相关文章:
![](https://www.ngui.cc/images/no-images.jpg)
使用Elasticsearch在同一索引中区分不同类型的文档
在使用Elasticsearch时,有时我们需要在同一个索引中存放不同类型的文档,并且这些文档的字段可能不一致。在早期版本中,我们可以使用types来实现,但在Elasticsearch 7.x及更高版本中,types概念已被弃用。本文将介绍如何…...
![](https://img-blog.csdnimg.cn/img_convert/21f5a40e9057174421154bba94802b6e.jpg)
驾校在线考试系统源码 手机+PC+平板自适应
Thinkphp在线考题源码 驾校在线考试系统 手机PC平板 自适应,机动车驾驶培训学校驾校类网站源码带手机端 运行环境:phpmysql 内附安装说明 驾校在线考试系统源码 手机PC平板自适应...
![](https://www.ngui.cc/images/no-images.jpg)
c++的多态,继承,抽象类,虚函数表,虚函数等题目+分析
目录 题目 代码题 分析 主观题 题目 代码题 class A { public:virtual void func(int val 1) {std::cout << "A->" << val << std::endl;}virtual void test() { func(); } };class B : public A { public:void func(int val 0) { std…...
![](https://img-blog.csdnimg.cn/direct/e678d5c05144448f9c9233bf292616a1.gif)
利用 Qwen-VL 进行私有化部署第一个 AI 多模态大模型
Hi~!这里是奋斗的小羊,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~ 💥💥个人主页:奋斗的小羊 💥💥所属专栏:C语言 🚀本系列文章为个人学习…...
![](https://img-blog.csdnimg.cn/img_convert/e6ae0e574692afd8d26f4e630b566179.jpeg)
王思聪隐形女儿曝光
王思聪"隐形"女儿曝光!黄一鸣独自面对怀孕风波,坚持生下爱情结晶近日,娱乐圈掀起了一场惊天波澜!前王思聪绯闻女友黄一鸣在接受专访时,大胆揭露了她与王思聪之间的爱恨纠葛,并首度公开承认&#…...
![](https://img-blog.csdnimg.cn/direct/48c2b91977bb472696d05a5d84a5013e.png)
学习笔记——网络管理与运维——SNMP(SNMP原理)
四、SNMP原理 SNMP的工作原理基于客户端-服务器模型。其中,网络管理系统是客户端,而网络设备是服务器。客户端向服务器发送请求消息(即"Get"或"Set"命令)来获取或修改服务器的信息。服务器收到请求消息后,会返回相应的响…...
![](https://img-blog.csdnimg.cn/direct/a7f822f26e9540a4a143d45b20df6f33.jpeg)
基于STM32和人工智能的自动驾驶小车系统
目录 引言环境准备自动驾驶小车系统基础代码实现:实现自动驾驶小车系统 4.1 数据采集模块4.2 数据处理与分析4.3 控制系统4.4 用户界面与数据可视化应用场景:自动驾驶应用与优化问题解决方案与优化收尾与总结 1. 引言 随着人工智能和嵌入式系统技术的…...
![](https://img-blog.csdnimg.cn/direct/a8ce7b2fee544c348e316d1cb7347d0d.png)
简单介绍vim
文章目录 前言一、Vim的特点二、安装Vim三、设置Vim配置文件的位置:编辑配置文件:添加配置选项:保存并退出编辑器:快速配置验证设置: 总结 前言 Vim是一款强大的文本编辑器,被广泛用于各种编程和文本编辑任…...
![](https://www.ngui.cc/images/no-images.jpg)
使用本地数据对transformers模型进行微调训练
模型 transformers模型是使用比较多的模型,奈何各个都是体积大,找了一个使用人多不是很大的模型进行训练。 需要魔法 bert-base-uncased模型仓库地址 huggingface下的所有仓库都是git的,也就意味着你可以使用 git clone 可以下载仓库内所有的…...
![](https://www.ngui.cc/images/no-images.jpg)
Java面试题:讨论何时需要创建自定义异常类,并展示如何实现一个自定义异常
在Java中,创建自定义异常类的目的是为了更加清晰和有意义地表示特定的错误情况,增强代码的可读性和可维护性。以下是一些需要创建自定义异常类的常见场景以及如何实现一个自定义异常。 何时需要创建自定义异常类 特定业务逻辑错误: 当业务逻…...
![](https://img-blog.csdnimg.cn/direct/bc72edf7b4b54ec79dc4a0ad6da9494f.gif)
什么是进程
自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 在了解进程之前,我们需要知道多任务的概念。多任务,顾名思义,就是指操作系统能够执行多个任务。例如,…...
![](https://img-blog.csdnimg.cn/img_convert/73190caa52e577e549a15690b8837614.jpeg)
电脑提示d3dcompiler_47.dll丢失的解决方法,实测靠谱的5种方法
在计算机使用过程中,缺失d3dcompiler_47.dll这一系统文件是一个常见问题,尤其是对于游戏和图形密集型应用程序用户来说尤为重要。这个文件是DirectX软件工具包的一部分,主要用于处理图形渲染的应用程序接口的核心元素。当你在运行游戏或某些软…...
![](https://img-blog.csdnimg.cn/f27819dd57a446f2b71867a8f357bfb7.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5omn5b-15pap6ZW_5rKz,size_20,color_FFFFFF,t_70,g_se,x_16)
SQLserver前五讲课堂笔记
第一讲 基本内容 为什么要学习数据库系统?什么是数据库?什么是数据库系统?什么是数据库管理系统?本课程学什么以及学到什么程度? 重点难点 一组概念的区分:数据库、数据库系统和数据库管理系统熟悉表 的相关要素及术语熟悉数据库系统的构成(工作…...
![](https://img-blog.csdnimg.cn/direct/73fb90b3b93b42e8872f048628762af2.png)
深度学习项目十六:根据训练好的权重文件推理图片--YOLO系列
文章目录 根据训练好的权重文件推理图片--YOLO系列一、自己构建YOLOv5推理代码1.1 对数据集进行模型训练1.2 对数据集进行模型推理检测1.3 自己编写推理函数1.3.1 针对单张进行推理1.3.2 针对文件夹下的图片进行推理二、自己构建YOLOv8推理代码2.1 对数据集进行模型训练2.2 对数…...
![](https://csdnimg.cn/release/blog_editor_html/release2.3.6/ckeditor/plugins/CsdnLink/icons/icon-default.png?t=N7T8)
敏感信息加密操作,让开发的系统更加的安全可靠!!
敏感信息加密操作,让开发的系统更加的安全可靠!!Jasypt(Java Simplified Encryption)是一个开源的Java库,用于简化加密操作。https://mp.weixin.qq.com/s/sPBV8Ej46YJsElImodRjAQ...
![](https://img-blog.csdnimg.cn/direct/6353af49e70f44629b476cd274e9e746.png)
第四篇:精通Docker构建:Dockerfile的艺术与策略
精通Docker构建:Dockerfile的艺术与策略 1. 开篇:探索Docker的革命 在探讨我们的主题之前,让我们先回顾一下Docker的概念。Docker是一个开源平台,用于自动化应用程序的部署、扩展和管理,这一切都是在轻量级的容器中进…...
![](https://img-blog.csdnimg.cn/direct/4789ee13f90b4fddbe47c613e56f37ba.png)
Linux下Cmake安装或版本更新
下载Cmake源码 https://cmake.org/download/ 找到对应的版本和类型 放进linux环境解压 编译 安装 tar -vxvf cmake-3.13.0.tar.gz cd cmake-3.13.0 ./bootstrap make make install设置环境变量 vi ~/.bashrc在文件尾加入 export PATH/your_path/cmake-3.13.0/bin:$PAT…...
![](https://www.ngui.cc/images/no-images.jpg)
人工智能体验工程师面试
在面试人工智能体验工程师时,面试官可能会从多个方面来考察候选人的能力和经验。以下是人工智能体验工程师面试题: 基础知识考察: 请简述人工智能、机器学习和深度学习的关系与区别。请解释神经网络的基本原理,以及它在人工智能中的应用。描述一种你熟悉的深度学习模型,并…...
![](https://img-blog.csdnimg.cn/direct/08af73c1f99647d9ae1236a7050ecff8.png)
科研——BIBM论文修改和提交
文章目录 引言投递流程Latex翻译流程latex模板使用bib文件正文修改 反馈时间线等待审稿结果 引言 第一轮投递快结束了,这里得加快进度,二十号截至,这里得在截至之前投一下,这里翻译整理一下投递的流程 投递流程 投递链接论文是…...
![](https://img-blog.csdnimg.cn/direct/a5d0e32fd56243359d8ca8ae96732790.png)
【bug】配置SpringCloudAlibaba AI的maven依赖问题
问题描述 尝鲜alibaba的ai模块,maven依赖一直报找不到包,报错如下 Unresolved dependency: org.springframework.ai:spring-ai-core:jar:0.8.1原因分析: 由于是按照官方文档配置的,所以检查了很多遍maven配置,加上去…...
![](https://www.ngui.cc/images/no-images.jpg)
人工智能和机器学习的应用日益广泛,在医疗健康领域的具体应用是什么?
人工智能(AI)和机器学习(ML)在医疗健康领域的应用日益广泛,涵盖了从疾病预测、辅助诊断、药物研发到健康管理等多个方面。以下是一些具体的应用实例和成功案例: 疾病预测与辅助诊断:机器学习算…...
![](https://img-blog.csdnimg.cn/direct/425c3c414a204be6b6d03bc2e4ff83ea.gif)
前端:鼠标点击实现高亮特效
一、实现思路 获取鼠标点击位置 通过鼠标点击位置设置高亮裁剪动画 二、效果展示 三、按钮组件代码 <template><buttonclass"blueBut"click"clickHandler":style"{backgroundColor: clickBut ? rgb(31, 67, 117) : rgb(128, 128, 128),…...
![](https://img-blog.csdnimg.cn/direct/ae8e0c6e5e874c859a735c66c72ebc67.png)
【计算机网络体系结构】计算机网络体系结构实验-DNS模拟器实验
一、DNS模拟器实验 拓扑图 1. 服务器ip 2. 服务器填写记录 3. 客户端ip以及连接到DNS服务器 4. ping测试...
![](https://img-blog.csdnimg.cn/direct/8e093e791e244a55bdcbf1755a07ad0d.png)
【profinet】从站开发要点
目录 0、常见缩写及关键字注释 1、profinet简介 2、profinet协议栈 3、profinet数据帧 4、profinet网络解决方案示例 5、Application areas 注:本文主要简述profinet从站开发涉及到的知识点。【不足之处后续慢慢补充】。 0、常见缩写及关键字注释 MRP: Media…...
![](https://www.ngui.cc/images/no-images.jpg)
浮点数的进制转换
浮点数的进制转换涉及到将十进制(基数为10)的浮点数转换为其他进制(如二进制、八进制、十六进制等)。以下是将十进制浮点数转换为其他进制的基本步骤: ### 1. 分离整数部分和小数部分: 将浮点数分为整数部…...
![](https://img-blog.csdnimg.cn/direct/4aa3b77912df41519b3fb3cafeac7fb4.png)
vue-饼形图-详细
显示效果 代码 <template> <div style"height: 350px;"> <div :class"className" :style"{height:height,width:width}"></div> </div> </template> <script> import * as echarts from echarts; req…...
![](https://img-blog.csdnimg.cn/direct/e9c0ce7580fb4b9ab643f3f1addd61da.png)
MySQL-备份+日志:介质故障与数据库恢复
目录 第1关:备份与恢复 任务描述 相关知识 MySQL的恢复机制 MySQL的备份与恢复工具 …...
![](https://img-blog.csdnimg.cn/direct/8671d64b2ced49aeb47c74c7f63f8297.png)
嵌入式开发十八:USART串口通信实验
上一节我们学习了串口通信的基本理论,串口通信是学习单片机的一个重要的一步,非常重要,这一节我们通过实验来学习串口通信的使用,以及串口的接收中断的使用。 一、发送单个字节uint8_t数据或者字符型数据 实现的功能:…...
![](https://img-blog.csdnimg.cn/direct/95b0fe42c1fa4c8381bc4fea79ca2c74.png)
redis复习
redis知识点 redis持久化redis 订阅发布模式redis主从复制哨兵模式redis雪崩,穿透缓存击穿(请求太多,缓存过期)缓存雪崩 redis持久化 redis是内存数据库,持久化有两种方式,一种是RDB(redis dat…...
![](https://img-blog.csdnimg.cn/direct/6676189285d14986a8180b851835c5c9.png#pic_center)
SUSE linux的快照和恢复
snapper用于创建和管理文件系统快照,并在需要时实现回滚,它还可以用于创建用户数据的磁盘备份。snapper使用btrfs文件系统或者精简配置的被格式化成XFS或EXT4的LVM卷。snapper可以通过命令行或YaST来进行管理。 btrfs是一种copy-on-write文件系统&#x…...
![](/images/no-images.jpg)
wordpress跳转安装/河南网站建站推广
Level-1路由器 Level-1路由器负责区域内的路由,它只与属于同一区域的Level-1和Level-1-2路由器形成邻居关系, 属于不同区域的Level-1路由器不能形成邻居关系 Level-1路由器只负责维护Level-1的链路状态数据库LSDB(Link State Database&am…...
![](https://pic002.cnblogs.com/images/2012/317326/2012080417324723.png)
建设管理部门网站查询/打开网址跳转到国外网站
为了减少数据冗余和使数据库内容变的严谨,MSSQL数据库里引入了关系和约束。我们平时做一些小程序,需要使用到MSSQL数据库的时候大多没有严格去规划一下数据库的设计,但是真正开发的时候需要你严格的进行需求分析后再进行数据库设计࿰…...
![](/images/no-images.jpg)
wordpress多站点功能/免费收录软文网站
步骤:1.创建一个Java项目; 2.右击该项目->Myeclipse->Add Spring Capabilites 3.打开一个对话框,Spring版本可以随意选最好选一个不太新,也不太旧; 4.假如选了Spring 3.1版本,然后在下面选择spring3.1Core Libraries和Spring 3.1Persistence Li…...
bootstrap响应式网站开发实战电商/网站关键词怎么添加
项目中oracle存储过程记录——常用语法备忘 项目中需要写一个oracle存储过程,需求是收集一个复杂查询的内容(涉及到多张表),然后把符合条件的记录插入到目标表中。其中原表之一的日期字段是timestamp类型,目标表的字段…...
![](/images/no-images.jpg)
有人用我的企业做网站/seo团队
禁止USB存储设备,但USB键盘和鼠标能用,把下面的内容COPY到记事本保存为BAT文件,然后运行即可禁止:echo ************************************************ echo . Author:Free allecho . echo *********************************…...
![](/images/no-images.jpg)
邯郸哪有做网站的公司/中国进入一级战备状态了吗
Delphi中的线程类 转贴于 华夏黑客同盟 http://www.77169.orgDelphi中有一个线程类TThread是用来实现多线程编程的,这个绝大多数Delphi书藉都有说到,但基本上都是对TThread类的几个成员作一简单介绍,再说明一下Execute的实现和Synchronize的用…...