Elasticsearch:处理 Elasticsearch 中的字段名称不一致

在 Elasticsearch 中,经常会遇到类似数据的不同索引具有不同字段名称的情况。 例如,一个索引可能使用字段名 level 来表示日志级别,而另一个索引可能使用 log_level 来达到相同目的。 出现这种不一致的原因有多种,例如不同的团队使用不同的命名约定、不断发展的数据模型或集成来自不同来源的数据。

跨两个索引搜索日志级别

要在 loglevel_test1 和 loglevel_test2 索引中搜索日志级别为 “info” 的所有文档,考虑到不同的字段名称,你可以按如下方式构建查询:

PUT loglevel_test1/_doc/1
{"level":"This is a very useful info in test1"
}DELETE loglevel_test2
PUT loglevel_test2/_doc/1
{"log_level":"This is a very useful info in test2"
}GET loglevel_test1,loglevel_test2/_search?filter_path=**.hits
{"query": {"bool": {"should": [{"term": {"level": "info"}},{"term": {"log_level": "info"}}],"minimum_should_match": 1}}
}

此查询检查 loglevel_test1 中的 level 字段和 loglevel_test2 中的 log_level 字段的值 “info”。 在 bool 查询中使用 should 子句可以灵活地匹配任一条件。 minimum_should_match 参数确保文档匹配时至少有一个条件为真,从而从两个索引返回所有相关文档。

上述查询的结果为:

{"hits": {"hits": [{"_index": "loglevel_test2","_id": "1","_score": 0.2876821,"_source": {"log_level": "This is a very useful info in test2"}},{"_index": "loglevel_test1","_id": "1","_score": 0.12343237,"_source": {"level": "This is a very useful info in test1"}}]}
}

使用 alias 来完成

我们可以参考文章 “Elasticsearch : alias 数据类型”。在索引中,我们可以为 loglevel_test2 定义如下的 alias:

PUT loglevel_test2/_mapping
{"properties": {"level": {"type": "alias","path": "log_level"}}
}

这样 level 也就是 log_level 的别名。我们再次使用如下的命令来进行搜索:

GET loglevel_test1,loglevel_test2/_search?filter_path=**.hits
{"query": {"match": {"level": "info"}}
}

上面搜索的结果是:

{"hits": {"hits": [{"_index": "loglevel_test1","_id": "1","_score": 0.2876821,"_source": {"level": "This is a very useful info in test1"}},{"_index": "loglevel_test2","_id": "1","_score": 0.2876821,"_source": {"log_level": "This is a very useful info in test2"}}]}
}

当然上面的搜索索引名称也有一大串。在使用的时候并不方便。我们可以再次使用如下的技巧来进行精简:

GET loglevel_test*/_search?filter_path=**.hits
{"query": {"match": {"level": "info"}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/131062.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Leetcode-1 两数之和

暴力穷举 class Solution {public int[] twoSum(int[] nums, int target) {int[] num new int[2];for(int i0;i<nums.length-1;i){for(int ji1;j<nums.length;j){if(nums[i]nums[j]target){num[0]i;num[1]j;}}}return num;} }HashMap&#xff0c;记录下标和对应值&…

Python功能制作之正则表达式批量删除并重命名文件

在平时&#xff0c;我们总是会遇到一种需要批量更改&#xff0c;或者是删除文件名字的情况。 对此&#xff0c;我们可以使用正则表达式进行匹配&#xff0c;然后去匹配删除相应的字数。 比如图片序列&#xff0c;因为一些特殊情况&#xff0c;导致名字为&#xff1a; 00000-…

SpringCloud 微服务全栈体系(十)

第十章 RabbitMQ 一、初识 MQ 1. 同步和异步通讯 微服务间通讯有同步和异步两种方式&#xff1a; 同步通讯&#xff1a;就像打电话&#xff0c;需要实时响应。 异步通讯&#xff1a;就像发邮件&#xff0c;不需要马上回复。 两种方式各有优劣&#xff0c;打电话可以立即得…

CLion2022安装

1. CLion下载 地址&#xff1a;https://www.jetbrains.com.cn/clion/download/other.html 下载你需要的版本&#xff0c;这里以2022.2.4为例 之后获取到对应的安装包 2. 安装 1、双击运行安装包&#xff0c;next 2、选择安装路径&#xff0c;建议非系统盘&#xff0c;nex…

git clone 报错:fatal: unable to access ‘https://github.com/XXXXXXXXX‘

国内使用GIT工具&#xff0c;拉取github代码&#xff0c;会因为网络原因无法成功拉取。出现如下类似情形&#xff1a; 此时更改 web URL即可&#xff0c;改用镜像的github网站替换https://github.com/。即URL里的https://github.com/换成https://hub.nuaa.cf/&#xff0c;即可…

linux之按键中断

查看原理图确认引脚 可以看到按键有两个&#xff0c;分别对应GPIO5_1和GPIO4_14 配置pinctrl&#xff0c;配置成GPIO模式 1.使用官方工具&#xff0c;配置下引脚 2.将生成的代码复制到设备树里 创建设备节点 生成二进制设备树文件 在工具链表下使用 make dtbs 或者使…

求职应聘校招社招,面对在线测评有什么技巧?

网上测评&#xff0c;不要怕&#xff0c;关键是在于你要提前准备充分。要说技巧&#xff0c;真心没有&#xff0c;但是建议我有一点点。 1、网上测评&#xff0c;技巧就是老实做 老老实实做题&#xff0c;我一贯的作风&#xff0c;老实人不吃亏。越是心思灵巧的人&#xff0c…

精通Nginx(05)-http工作机制、指令和内置变量

http服务是Nginx最原始的服务,搞清楚其工作机制非常有利于弄懂nginx是如何工作的。 Nginx核心模块为ngx_http_core_module。 目录 http工作机制 配置结构 工作机制 http常用指令 http server listen server_name location 优先级 "/"的特殊用法 root/a…

【STM32】基于HAL库建立自己的低功耗模式配置库(STM32L4系列低功耗所有配置汇总)

【STM32】基于HAL库建立自己的低功耗模式配置库&#xff08;STM32L4系列低功耗所有配置汇总&#xff09; 文章目录 低功耗模式&#xff08;此章节可直接跳过&#xff09;低功耗模式简介睡眠模式停止模式待机模式 建立自己的低功耗模式配置库通过结构体的方式来进行传参RTC配置…

使用自定义函数拟合辨识HPPC工况下的电池数据(适用于一阶RC、二阶RC等电池模型)

该程序可以离线辨识HPPC工况下的电池数据&#xff0c;只需要批量导入不同SOC所对应的脉冲电流电压数据&#xff0c;就可以瞬间获得SOC为[100% 90% 80% 70% 60% 50% 40% 30% 20% 10% 0%]的所有电池参数,迅速得到参数辨识的结果并具有更高的精度&#xff0c;可以很大程度上降低参…

降低毕业论文写作压力的终极指南

亲爱的同学们&#xff0c;时光荏苒&#xff0c;转眼间你们即将踏入毕业生的行列。毕业论文作为本科和研究生阶段的重要任务&#xff0c;不仅是对所学知识的综合运用&#xff0c;更是一次对自己学术能力和专业素养的全面考验。然而&#xff0c;论文写作常常伴随着压力和焦虑&…

适合新手使用的电脑监控软件有哪些?

电脑监控软件是一种用于监控和管理电脑行为的软件工具&#xff0c;可以帮助企业或个人了解和掌握员工或家庭成员的电脑使用情况&#xff0c;保障网络安全和隐私。现在市面上的电脑监控软件越来越多&#xff0c;究竟哪些操作起来比较简单&#xff0c;适合新手使用呢&#xff1f;…

力扣 203.移除链表元素第二种解法

目录 1.解题思路2.代码实现 1.解题思路 利用双指针&#xff0c;开辟一个新的头结点并依次向头结点尾插不为val的结点如果遇到值为val的结点就跳过并释放掉 2.代码实现 struct ListNode* removeElements(struct ListNode* head, int val) { if(headNULL)return NULL;struct …

win10系统nodejs的安装npm教程

1.在官网下载nodejs&#xff0c;https://nodejs.org/en 2&#xff0c;双击nodejs的安装包 3&#xff0c;点击 next 4&#xff0c;勾选I accpet the terms in…… 5&#xff0c;第4步点击next进入配置安装路径界面 6,点击next&#xff0c;选中Add to PATH &#xff0c;旁边…

[100天算法】-有序矩阵中第K小的元素(day 58)

题目描述 给定一个 n x n 矩阵&#xff0c;其中每行和每列元素均按升序排序&#xff0c;找到矩阵中第 k 小的元素。 请注意&#xff0c;它是排序后的第 k 小元素&#xff0c;而不是第 k 个不同的元素。示例&#xff1a;matrix [[ 1, 5, 9],[10, 11, 13],[12, 13, 15] ], k …

Spring-Bean的销毁

Bean的销毁 public abstract class AbstractBeanFactory extends FactoryBeanRegistrySupport implements ConfigurableBeanFactory {/*** Add the given bean to the list of disposable beans in this factory,* registering its DisposableBean interface and/or the given…

2311dC++连接与串

原文 extern(C)函数使用在装饰名中包括参数类型的C装饰名.但是,因为C没有像D的T[]内置切片类型,因此C没有有效的D切片装饰. 因此,无法编译以D切片为参数的extern(C)函数. 为此,可按结构转换切片: struct DSlice(T) {T* ptr;size_t length;T[] opIndex() > ptr[0 .. length]…

浅谈前端出现率高的设计模式

目录 六大原则&#xff1a; 23 种设计模式分为“创建型”、“行为型”和“结构型” 前端九种设计模式 一、创建型 1.构造器模式&#xff1a;抽象了对象实例的变与不变(变的是属性值&#xff0c;不变的是属性名) 2. 工厂模式&#xff1a;为创建一组相关或相互依赖的对象提…

AIGC(生成式AI)试用 10 -- 安全性问题

上次遗留的问题&#xff1a;代码的安全性呢&#xff1f;下次找几个问题测试下看。 AI&#xff0c;你安全吗&#xff1f; AI生成的程序&#xff0c;安全吗&#xff1f; 也许这个世界最难做的事就是自己测试自己&#xff1a;测试什么&#xff1f;如何测&#xff1f; …

数据库实验:SQL的数据定义与单表查询

目录 实验目的实验内容实验要求实验过程实验步骤实例代码结果示意 数据库的实验&#xff0c;对关系型数据库MySQL进行一些实际的操作 实验目的 (1) 掌握DBMS的数据定义功能 (2) 掌握SQL语言的数据定义语句 (3) 掌握RDBMS的数据单表查询功能 (4) 掌握SQL语言的数据单表查询语句…