python爬取elasticsearch内容

我们以上篇的elasticsearch添加的内容为例,对其内容进行爬取,并获得有用信息个过程。

先来看一下elasticsearch中的内容:

 

{"took": 88,"timed_out": false,"_shards": {"total": 5,"successful": 5,"skipped": 0,"failed": 0},"hits": {"total": 3,"max_score": 1,"hits": [{"_index": "megacorp","_type": "employee","_id": "2","_score": 1,"_source": {"first_name": "Jane","last_name": "Smith","age": 32,"about": "I like to collect rock albums","interests": ["music"]}},{"_index": "megacorp","_type": "employee","_id": "1","_score": 1,"_source": {"first_name": "John","last_name": "Smith","age": 25,"about": "I love to go rock climbing","interests": ["sports","music"]}},{"_index": "megacorp","_type": "employee","_id": "3","_score": 1,"_source": {"first_name": "Douglas","last_name": "Fir","age": 35,"about": "I like to build cabinets","interests": ["forestry"]}}]}
}

 

1.在python中,首先要用到urllib的包,其次对其进行读取的格式为json。

import urllib.request as request
import json

2.接下来,我们获取相应的路径请求,并用urlopen打开请求的文件:

if __name__ == '__main__':req = request.Request("http://localhost:9200/megacorp/employee/_search")resp = request.urlopen(req)

3.对得到的resp,我们需要用json的格式迭代输出:(注意是字符串类型)

jsonstr=""for line in resp:jsonstr+=line.decode()data=json.loads(jsonstr)print(data)

4.但是我们得到的信息是包含内容和属性的,我们只想得到内容,那么久需要对每层的属性进行分解获取:

employees = data['hits']['hits']for e in employees:_source=e['_source']full_name=_source['first_name']+"."+_source['last_name']age=_source["age"]about=_source["about"]interests=_source["interests"]print(full_name,'is',age,",")print(full_name,"info is",about)print(full_name,'likes',interests)

得到的内容为:

 

Jane.Smith is 32 ,
Jane.Smith info is I like to collect rock albums
Jane.Smith likes ['music']John.Smith is 25 ,
John.Smith info is I love to go rock climbing
John.Smith likes ['sports', 'music']Douglas.Fir is 35 ,
Douglas.Fir info is I like to build cabinets
Douglas.Fir likes ['forestry']

 

 

 

 

 

对于需要聚合的内容,我们可以通过下面的方法进行获取:

1:获取路径

 

url="http://localhost:9200/megacorp/employee/_search"

 

2.获取聚合的格式查询

 

data='''
    {"aggs" : {"all_interests" : {"terms" : { "field" : "interests" },"aggs" : {"avg_age" : {"avg" : { "field" : "age" }}}}}
}'''

 

3.标明头部信息

headers={"Content-Type":"application/json"}

4.同样,以请求和相应的方式获取信息并迭代为json格式

req=request.Request(url=url,data=data.encode(),headers=headers,method="GET")resp=request.urlopen(req)jsonstr=""for line in resp:jsonstr+=line.decode()rsdata=json.loads(jsonstr)

5.有用聚合信息内部依然是数组形式,所以依然需要迭代输出:

agg = rsdata['aggregations']
buckets = agg['all_interests']['buckets']for b in buckets:key = b['key']doc_count = b['doc_count']avg_age = b['avg_age']['value']        
print('aihao',key,'gongyou',doc_count,'ren,tamenpingjuageshi',avg_age)

最终得到信息:

aihao music gongyou 2 ren,tamenpingjuageshi 28.5aihao forestry gongyou 1 ren,tamenpingjuageshi 35.0aihao sports gongyou 1 ren,tamenpingjuageshi 25.0

 

转载于:https://www.cnblogs.com/qianshuixianyu/p/9287556.html

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

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

相关文章

创业必经之路——Paul Graham创业曲线

导读:国外媒体avc.com近日发表一篇文章《The Startup Curve》,文中谈到创业者都处于Paul Graham创业曲线中各个阶段,不要一味的畏惧失败,要多倾听客户反馈并从中寻找制胜的信息。总而言之,不畏艰难即可成功。以下为文章…

Java:对象的强、软、弱和虚引用

见:http://zhangjunhd.blog.51cto.com/113473/53092 maven/Java/web/bootstrap/dataTable/app开发QQ群:566862629。希望更多人一起帮助我学习。 1.对象的强、软、弱和虚引用在JDK 1.2以前的版本中,若一个对象不被任何变量引用&am…

java注解:@Deprecated(不建议使用的,废弃的);@SuppressWarnings(忽略警告,达到抑制编译器产生警告的目的)

java注解:Deprecated(不建议使用的,废弃的), SuppressWarnings(忽略警告,达到抑制编译器产生警告的目的)Deprecated可以修饰类、方法、变量,在java源码中被Deprecated修饰的类、方法、变量等表示不建议使用的,可能会出…

Mysql 替换字段的一部分内容

UPDATE 表名 SET 字段名 REPLACE( 替换前的字段值, 替换前关键字, 替换后关键字 ) WHERE 字段名 REGEXP "替换前的字段值"; 例子: UPDATE user SET mobile REPLACE( head_img, "http://7xswdm.com1.z0.glb.clouddn.com", "http://qiniu-i…

聊聊3种最常见的响应式设计问题

响应式设计方法对开发者非常有用,因为它使我们的内容在各种设备上广为传播。不用保留几个独立版本的网站,也可以摒除诸如缩放和流式布局这些方法的弊端。 缩放、流式布局与响应式 这些术语容易造成混淆,设计师常常错误地交替互用。实际上&…

PV、TPS、QPS是什么

pv 是指页面被浏览的次数,比如你打开一网页,那么这个网站的pv就算加了一次;tps是每秒内的事务数,比如执行了dml操作,那么相应的tps会增加;qps是指每秒内查询次数,比如执行了select操作&#xff…

AOP原理解析及Castle、Autofac、Unity框架使用

转自:https://www.cnblogs.com/neverc/p/5241466.html AOP介绍 面向切面编程(Aspect Oriented Programming,英文缩写为AOP),通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。 AOP是OOP的延续,是软件…

bootstrap validator 提供了哪些验证函数

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 目前提供的校验方法有: "notEmpty" : "不能为空", "password" : "请输入正确的密码&q…

帕累托分布(Pareto distributions)、马太效应

什么是帕累托分布 帕累托分布是以意大利经济学家维弗雷多帕雷托命名的。 是从大量真实世界的现象中发现的幂次定律分布。这个分布在经济学以外,也被称为布拉德福分布。 帕累托因对意大利20%的人口拥有80%的财产的观察而著名,后来被约瑟夫朱兰和其他人概括…

两个class写在同一个java文件中

第一种: 一个public类,多个非public类,例如:public class A{}class B{}第二个class前面不能加public。 第二种: 第二种是内部类,写在公共类体里面的&#xff…

微信小程序的一些数据调用方式

1.模板数据的调用 一张图了解一下在wxml页调用预先定义好的模板: 可以看到上面调用了两个模板,数据调用却是不同的,obj是一个对象,对象内包含多个键值对形式的数据; tabbar是一个一维数组,每个数组项又都是…

手机厂商探路互联网:硬件高利润时代已成历史

华为消费者业务集团CEO兼终端公司董事长余承东近日出席“2012年全球移动互联网大会”期间证实,华为计划与奇虎360合作推出一款智能手机。 余承东表示,华为终端将尝试与多家互联网公司就智能手机业务展开合作,但他未透露与奇虎360合作的更多细…

解决:按截图 ctrl+alt+a QQ聊天窗口就自动最小化(QQ以外的可以截图)

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 一、问题如题 ,想截图QQ聊天记录都不行 二、 解决方法: 如图找到QQ截图按钮,点击下拉倒三角&…

数据库备份DBS商业化发布

数据库备份DBS商业化发布将在2018年7月11日 15:00-16:00直播,敬请关注! 数据库备份DBS为数据库提供连续数据保护、低成本的备份服务。 它可以为多种环境的数据提供强有力的保护,包括企业数据中心、其他云厂商及公共云。数据库备份提供数据备份…

堡垒机(跳板机)

堡垒机(跳板机)?现在一定规模互联网企业,往往都拥有大量服务器,如何安全并高效的管理这些服务器是每个系统运维或安全运维人员必要工作。现在比较常见的方案是搭建堡垒机环境作为线上服务器的入口,所有服务…

2018-09-18

12.1 LNMP架构介绍 和LAMP不同的是,提供web服务的是Nginx并且php是作为一个独立服务存在的,这个服务叫做php-fpmNginx直接处理静态请求,动态请求会转发给php-fpm12.2 MySQL安装 二进制免编译包安装 [rootlocalhost ~]# cd /usr/local/src/ [r…

举例说明Java中代码块的执行顺序

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 结论 这里先把整理好的结论抛给大家,然后我在写个程序来验证我们的结论。在Java类被new的过程中,执行顺序如…

Google 正式开源 Jib ,帮助 Java 应用快速容器化

Google 本周宣布开源一款新的 Java 工具 Jib ,旨在让开发者使用他们熟悉的工具更轻松地将 Java 应用程序容器化。在7月9日发布的博客文章中,Google 软件工程师 Appu Goundan 和 Qingyang Chen 将 Jib 描述为一个容器镜像构建器,旨在处理将 Ja…

“公敌”京东:众同行将其拖入价格战

倒京东语录 当当网董事长李国庆: 京东的资金只能维持到8月至12月。当当网是赚一个花两个,而京东则是赚一个花四个。 苏宁电器董事长张近东: 我至今没有看见过哪个企业能通过这种方式取得最后胜利。这种违背正常商业逻辑的做法&#xff0c…

跨域与跨域访问

什么是跨域 跨域是指从一个域名的网页去请求另一个域名的资源。比如从www.baidu.com 页面去请求 www.google.com 的资源。跨域的严格一点的定义是:只要 协议,域名,端口有任何一个的不同,就被当作是跨域 为什么浏览器要限制跨域访…