es查询响应结果中获取某些字段的值

news2024/11/14 1:15:58

        有时候使用es查询出的结果包含多个字段,如果数据中仅仅包含几个字段时,我们是很容易挑出自己需要的字段值,但是如果数据中包含几十或者几百甚至更多时,尤其是数据中嵌套好多层时,不容易直接挑取出需要的值,这时候可以借助程序直接查找出来。或者针对性的直接查询时就限定条件查询某些字段的值。

直接从es中查询出的示例数据:

{
	"took": 918,
	"timed_out": false,
	"_shards": {
		"total": 1,
		"successful": 1,
		"skipped": 0,
		"failed": 0
	},
	"hits": {
		"total": {
			"value": 4,
			"relation": "eq"
		},
		"max_score": 1.0,
		"hits": [{
				"_index": "test",
				"_type": "user",
				"_id": "QHi1UoIBpyNh4YQ4T1Sq",
				"_score": 1.0,
				"_source": {
					"id": 1001,
					"name": "张三",
					"age": 20,
					"sex": "男",
					"grade": {
						"Chinese": 99,
						"Math": 98,
						"English": 96
					}
				}
			},
			{
				"_index": "test",
				"_type": "user",
				"_id": "1002",
				"_score": 1.0,
				"_source": {
					"id": 1002,
					"name": "李四",
					"age": 23,
					"sex": "女",
					"grade": {
						"Chinese": 98,
						"Math": 99,
						"English": 97
					}
				}
			},
			{
				"_index": "test",
				"_type": "user",
				"_id": "1003",
				"_score": 1.0,
				"_source": {
					"id": 1003,
					"name": "王五",
					"age": 27,
					"sex": "男",
					"grade": {
						"Chinese": 93,
						"Math": 90,
						"English": 99
					}
				}
			},
			{
				"_index": "test",
				"_type": "user",
				"_id": "1004",
				"_score": 1.0,
				"_source": {
					"id": 1004,
					"name": "赵六",
					"age": 29,
					"sex": "女",
					"grade": {
						"Chinese": 100,
						"Math": 95,
						"English": 94
					}
				}
			}
		]
	}
}

使用python打印出需要的字段值:

import json
import jmespath


with open('text.txt', 'r', encoding='utf-8') as f:
    data = f.read()

json_data = json.loads(data)
# print(json_data)
sources = json_data.get('hits').get('hits')
# print(sources)
for source in sources:
    # print(source)
    data = source.get('_source')
    print(data)
    valid_fields = '{name: name, Chinese_grade: grade.Chinese}'
    ret = jmespath.search(valid_fields, data)
    print(ret)

运行结果:

注意:使用json.load()时,会把文本中的fase、true直接变为False、True

参考博文:

python中jmespath库用法详解_IT之一小佬的博客-CSDN博客_jmespath python

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

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

相关文章

【人工智能/算法】搜索求解(Solving Problems by Searching)

文章目录一、求解与搜索二、盲目式搜索1. 深度优先搜索(Depth First Search, DFS)回溯搜索(Backtracking Search)2. 广度优先搜索(Breadth First Search, BFS)一致代价搜索(Uniform-cost Search…

你们看过《点燃我,温暖你》没有呀,里面比较火的那个爱心代码,今天小编用Python实现啦,这就是程序员的烂漫吗

前言 包子们,上午好 最近有个剧挺火的 就是那个程序员的剧,叫《点燃我,温暖你》 最近听说很火呀,那作为程序员,Python中的战斗机的小编,能不给大家安排一波! 怎么说呢,用这个表白也…

DJ13-1 汇编语言程序设计-1

目录 一、基本概念 1. 机器语言(machine language) 2. 汇编语言(assembly language) 3. 汇编语言源程序 4. 汇编(assemble) 5. 汇编程序(assembler) 6. 宏汇编程序&#xff0…

[附源码]JAVA毕业设计教材管理(系统+LW)

[附源码]JAVA毕业设计教材管理(系统LW) 目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术&#xf…

利用CMOS数字隔离器提高智能计量解决方案的数据完整性和可靠性

介绍 随着消费者从传统的机电电表升级到联网的智能电表,自动读表(AMR)市场预计在未来几年将以两位数的速度增长。当今先进的智能电表使用最新的集成电路(IC)技术来准确地测量和报告所消耗的耗电量。虽然智能电表比机电…

【pen200-lab】10.11.1.231

pen200-lab 学习笔记 【pen200-lab】10.11.1.231 🔥系列专栏:pen200-lab 🎉欢迎关注🔎点赞👍收藏⭐️留言📝 📆首发时间:🌴2022年11月27日🌴 🍭作…

Metabase学习教程:系统管理-2

数据共享指南 在组织内部或外部,共享数据或分析的选项是什么?何时应该使用一种方法而不是另一种方法? 你有数据,你想(或被要求)分享它。这些数据是一个问题还是一个访问多个数据库完整的问题数据资料室&a…

SpringCloud - Sentinel熔断与限流

文章目录一.Sentinel下载安装运行二.Sentinel初始化监控三.流控规则1. 阈值类型1.1 QPS1.2 线程数2. 流控模式2.1 直接2.2 关联2.3 链路3. 流控效果3.1 快速失败3.2 WarmUp预热3.3 排队等待四.降级规则1. RT2. 异常比例3. 异常数五.Sentinel 热点key1. 基本使用2. 参数例外项六…

Spring Data JPA - Web 支持、排序和分页

在前面的教程中,我们已经看到了如何使用 Spring Data 分页 Web 支持。在本教程中,我们将了解如何使用排序支持。 在基于 Web 的应用程序中应用排序主要有两种方法: 按可分页处理程序参数排序 我们在前面的示例中使用过,但没有任…

【经验】Word 2021|如何在Word里做出和Markdown中一样漂亮的引用样式(结尾附成品)

文章目录写在最前方法以及参数1 打开样式窗口2 设置一些基本操作3 打开格式窗口4 修改样式最后一步!保持间隔成品的介绍(一些自卖自夸)获取链接(不想看做法的话直接下载)写在最前 Word 版本:2021 这个文章是…

[附源码]JAVA毕业设计技术的游戏交易平台(系统+LW)

[附源码]JAVA毕业设计技术的游戏交易平台(系统LW) 目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技…

Python使用GARCH,EGARCH,GJR-GARCH模型和蒙特卡洛模拟进行股价预测

全文下载链接:http://tecdat.cn/?p20678在本文中,预测股价已经受到了投资者,政府,企业和学者广泛的关注。然而,数据的非线性和非平稳性使得开发预测模型成为一项复杂而具有挑战性的任务(点击文末“阅读原文…

HTML+CSS个人电影网页设计——电影从你的全世界路过(4页)带音乐特效

HTML实例网页代码, 本实例适合于初学HTML的同学。该实例里面有设置了css的样式设置,有div的样式格局,这个实例比较全面,有助于同学的学习,本文将介绍如何通过从头开始设计个人网站并将其转换为代码的过程来实践设计。 文章目录一、网页介绍一…

期末测试——H5方式练习题

期末考试——H5完成方式——练习题 前言 本练习训练了孩子们的栅格化布局,H5标签,CSS样式,并对列表与菜单进行了强化训练。使孩子们更好的掌握H5布局,为后面的框架教学打好基础。 素材下载地址: 链接:htt…

【学习记录】Dynaslam源代码魔改-替换MaskRCNN为YoloV5

这两天接了个小任务,需求是替换Dynaslam里面的动态物体识别模块,将MaskRCNN换为YoloV5,这里记录一下过程中遇见的问题。 一、运行Dynaslam Dynaslam本身是一个基于ORBSLAM2的视觉SLAM框架,论文并没有仔细看过,简单来…

HTML5期末大作业:基于html+css+javascript+jquery实现藏族文化15页【学生网页设计作业源码】

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

免费搜索vs付费搜索:百度谷歌的有力竞争者刚刚出现!

北大出版社,人工智能原理与实践 人工智能和数据科学从入门到精通 详解机器学习深度学习算法原理 人工智能原理与实践 全面涵盖人工智能和数据科学各个重要体系经典 搜索引擎的游戏刚刚被改变! 人们对昨天(12月1号)OpenAI 发布…

UltraISO 制作U盘启动盘

1、 从Ubuntu官网http://cn.ubuntu.com/download/下载系统的iso文件 用来制作的U盘需要是FAT32格式的,可以通过格式化U盘更改(注意,如果U盘已经写入过隐藏分区了,需要在磁盘管理里面删除相关隐藏分区然后合并为一个大分区后…

[附源码]Python计算机毕业设计Django基于协同过滤的资讯推送平台

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

MyBatis动态SQL多表操作

动态SQL if-where标签 <select id"selByCondition" resultMap"rm">select *from mybatis<where><if test"status !null">and STATUS#{STATUS}</if><if test"companyName !null and companyName !">an…