使用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版本,灵活性更高,但需要在文档设计和查询时额外注意区分。
如果对你有帮助的话点个赞呗~
相关文章:
使用Elasticsearch在同一索引中区分不同类型的文档
在使用Elasticsearch时,有时我们需要在同一个索引中存放不同类型的文档,并且这些文档的字段可能不一致。在早期版本中,我们可以使用types来实现,但在Elasticsearch 7.x及更高版本中,types概念已被弃用。本文将介绍如何…...
驾校在线考试系统源码 手机+PC+平板自适应
Thinkphp在线考题源码 驾校在线考试系统 手机PC平板 自适应,机动车驾驶培训学校驾校类网站源码带手机端 运行环境:phpmysql 内附安装说明 驾校在线考试系统源码 手机PC平板自适应...
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…...
利用 Qwen-VL 进行私有化部署第一个 AI 多模态大模型
Hi~!这里是奋斗的小羊,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~ 💥💥个人主页:奋斗的小羊 💥💥所属专栏:C语言 🚀本系列文章为个人学习…...
王思聪隐形女儿曝光
王思聪"隐形"女儿曝光!黄一鸣独自面对怀孕风波,坚持生下爱情结晶近日,娱乐圈掀起了一场惊天波澜!前王思聪绯闻女友黄一鸣在接受专访时,大胆揭露了她与王思聪之间的爱恨纠葛,并首度公开承认&#…...
学习笔记——网络管理与运维——SNMP(SNMP原理)
四、SNMP原理 SNMP的工作原理基于客户端-服务器模型。其中,网络管理系统是客户端,而网络设备是服务器。客户端向服务器发送请求消息(即"Get"或"Set"命令)来获取或修改服务器的信息。服务器收到请求消息后,会返回相应的响…...
基于STM32和人工智能的自动驾驶小车系统
目录 引言环境准备自动驾驶小车系统基础代码实现:实现自动驾驶小车系统 4.1 数据采集模块4.2 数据处理与分析4.3 控制系统4.4 用户界面与数据可视化应用场景:自动驾驶应用与优化问题解决方案与优化收尾与总结 1. 引言 随着人工智能和嵌入式系统技术的…...
简单介绍vim
文章目录 前言一、Vim的特点二、安装Vim三、设置Vim配置文件的位置:编辑配置文件:添加配置选项:保存并退出编辑器:快速配置验证设置: 总结 前言 Vim是一款强大的文本编辑器,被广泛用于各种编程和文本编辑任…...
使用本地数据对transformers模型进行微调训练
模型 transformers模型是使用比较多的模型,奈何各个都是体积大,找了一个使用人多不是很大的模型进行训练。 需要魔法 bert-base-uncased模型仓库地址 huggingface下的所有仓库都是git的,也就意味着你可以使用 git clone 可以下载仓库内所有的…...
Java面试题:讨论何时需要创建自定义异常类,并展示如何实现一个自定义异常
在Java中,创建自定义异常类的目的是为了更加清晰和有意义地表示特定的错误情况,增强代码的可读性和可维护性。以下是一些需要创建自定义异常类的常见场景以及如何实现一个自定义异常。 何时需要创建自定义异常类 特定业务逻辑错误: 当业务逻…...
什么是进程
自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 在了解进程之前,我们需要知道多任务的概念。多任务,顾名思义,就是指操作系统能够执行多个任务。例如,…...
电脑提示d3dcompiler_47.dll丢失的解决方法,实测靠谱的5种方法
在计算机使用过程中,缺失d3dcompiler_47.dll这一系统文件是一个常见问题,尤其是对于游戏和图形密集型应用程序用户来说尤为重要。这个文件是DirectX软件工具包的一部分,主要用于处理图形渲染的应用程序接口的核心元素。当你在运行游戏或某些软…...
SQLserver前五讲课堂笔记
第一讲 基本内容 为什么要学习数据库系统?什么是数据库?什么是数据库系统?什么是数据库管理系统?本课程学什么以及学到什么程度? 重点难点 一组概念的区分:数据库、数据库系统和数据库管理系统熟悉表 的相关要素及术语熟悉数据库系统的构成(工作…...
深度学习项目十六:根据训练好的权重文件推理图片--YOLO系列
文章目录 根据训练好的权重文件推理图片--YOLO系列一、自己构建YOLOv5推理代码1.1 对数据集进行模型训练1.2 对数据集进行模型推理检测1.3 自己编写推理函数1.3.1 针对单张进行推理1.3.2 针对文件夹下的图片进行推理二、自己构建YOLOv8推理代码2.1 对数据集进行模型训练2.2 对数…...
敏感信息加密操作,让开发的系统更加的安全可靠!!
敏感信息加密操作,让开发的系统更加的安全可靠!!Jasypt(Java Simplified Encryption)是一个开源的Java库,用于简化加密操作。https://mp.weixin.qq.com/s/sPBV8Ej46YJsElImodRjAQ...
第四篇:精通Docker构建:Dockerfile的艺术与策略
精通Docker构建:Dockerfile的艺术与策略 1. 开篇:探索Docker的革命 在探讨我们的主题之前,让我们先回顾一下Docker的概念。Docker是一个开源平台,用于自动化应用程序的部署、扩展和管理,这一切都是在轻量级的容器中进…...
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…...
人工智能体验工程师面试
在面试人工智能体验工程师时,面试官可能会从多个方面来考察候选人的能力和经验。以下是人工智能体验工程师面试题: 基础知识考察: 请简述人工智能、机器学习和深度学习的关系与区别。请解释神经网络的基本原理,以及它在人工智能中的应用。描述一种你熟悉的深度学习模型,并…...
科研——BIBM论文修改和提交
文章目录 引言投递流程Latex翻译流程latex模板使用bib文件正文修改 反馈时间线等待审稿结果 引言 第一轮投递快结束了,这里得加快进度,二十号截至,这里得在截至之前投一下,这里翻译整理一下投递的流程 投递流程 投递链接论文是…...
【bug】配置SpringCloudAlibaba AI的maven依赖问题
问题描述 尝鲜alibaba的ai模块,maven依赖一直报找不到包,报错如下 Unresolved dependency: org.springframework.ai:spring-ai-core:jar:0.8.1原因分析: 由于是按照官方文档配置的,所以检查了很多遍maven配置,加上去…...
SITS 2026架构图首次公开:从Token级流控到Agent级协同,6大核心模块接口规范全披露
更多请点击: https://intelliparadigm.com 第一章:AI原生对话系统设计:SITS 2026聊天机器人架构解析 SITS 2026(Semantic Interaction & Temporal Synthesis)是面向生产环境的AI原生对话系统参考架构,…...
全面战争模组开发者的终极工具箱:RPFM如何重新定义游戏数据管理
全面战争模组开发者的终极工具箱:RPFM如何重新定义游戏数据管理 【免费下载链接】rpfm Rusted PackFile Manager (RPFM) is a... reimplementation in Rust and Qt6 of PackFile Manager (PFM), one of the best modding tools for Total War Games. 项目地址: ht…...
别盲目转型!程序员转智能体开发,先搞懂这5个核心问题
文章目录前言问题一:智能体开发到底需要什么技术栈?是不是必须会训大模型?必须掌握的核心技术栈可选学习的进阶技术栈问题二:传统程序员的哪些技能可以直接复用?哪些需要补?可以直接复用的核心技能需要补充…...
基于Gemini大模型的自动化学术研究工具:从原理到实践
1. 项目概述:当AI学会自主研究 最近在GitHub上闲逛,发现了一个让我眼前一亮的项目: supratikpm/gemini-autoresearch 。简单来说,这是一个利用Google的Gemini大语言模型,实现自动化、端到端学术研究的工具。作为一名…...
实测Taotoken聚合API的延迟与稳定性表现
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 实测Taotoken聚合API的延迟与稳定性表现 作为一名需要频繁调用大模型API的开发者,选择一个稳定、响应迅速的服务平台至…...
KMS_VL_ALL_AIO:3分钟完成Windows与Office智能激活的终极指南
KMS_VL_ALL_AIO:3分钟完成Windows与Office智能激活的终极指南 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为Windows系统激活而烦恼吗?KMS_VL_ALL_AIO是一款开源智…...
5分钟终极指南:Steam成就管理器如何帮你找回错过的游戏成就
5分钟终极指南:Steam成就管理器如何帮你找回错过的游戏成就 【免费下载链接】SteamAchievementManager A manager for game achievements in Steam. 项目地址: https://gitcode.com/gh_mirrors/st/SteamAchievementManager 你是否曾经因为游戏Bug、存档损坏或…...
从真值到补码:计算机如何用0和1表示正负与运算
1. 为什么计算机需要表示负数? 当你用计算器做减法时,可能从没想过计算机内部其实只会做加法。我第一次接触这个概念时也很惊讶——原来计算机用补码表示负数,就是为了把减法变成加法运算。这就像魔术师的手法,看似简单的0和1背后…...
3个步骤如何为Unity应用集成Perseus原生库功能扩展
3个步骤如何为Unity应用集成Perseus原生库功能扩展 【免费下载链接】Perseus Azur Lane scripts patcher. 项目地址: https://gitcode.com/gh_mirrors/pers/Perseus Perseus是一个专为Unity Android应用设计的原生库补丁框架,通过无偏移地址设计实现功能扩展…...
探索Sunshine:重新定义游戏串流的4个维度体验
探索Sunshine:重新定义游戏串流的4个维度体验 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine 想象一下,你可以在客厅的电视上畅玩书房高性能PC的游戏&#…...
