elasticsearch_dsl 操作
import elasticsearch
from elasticsearch_dsl import Search, MultiSearch # Search-执行一个搜索,MultiSearch-同时执行多个搜索
from elasticsearch_dsl import Q class settings():
es_host = "192.168.8.190"
port = 9200
timeout = 15000
index = ['pylog-view-*',]
#index = ['pylog-view-2020.12.07','pylog-view-2020.12.08'] es = elasticsearch.Elasticsearch([{'host': settings.es_host, 'port': settings.port}])
# size 指定个数, from_ 指定起始位置,filter_path 可以指定显示的数据 s = Search(using=es, index=settings.index) # 查询
# s = s.query("match", browser = "小米浏览器"})
# s = s.query("match", ** {"browser": "小米浏览器"})
# s = s.query("match", browser__keyword = "小米浏览器"}) # , Q("term", browser = "华为浏览器") # q = Q('bool', should=[Q('term', **{"browser.keyword": "小米浏览器"})]) # q = Q('bool', should=[Q('term', **{"browser.keyword": "小米浏览器"}), Q('term', **{"browser.keyword": "华为浏览器"})]) # q = Q('bool', should=[Q('term', browser__keyword = "小米浏览器")]) # s = s.query(q) # s = s.filter("term", browser__keyword = "小米浏览器") # s = s.query("match", browser__keyword = "小米浏览器") # s = s.exclude('terms', browser__keyword=['华为浏览器', "小米浏览器", 'pc', '谷歌浏览器', '谷歌爬虫', '百度app', 'Safari浏览器']) # 分页切片
#s = s[1:3] # print(s.count()) # 模糊匹配 """
1.使用Wildcard Query的通配符进行查询
前提是查询的字段类型是string类型,对应ES中的text,keyword(这种查询方式会慢,查询不进行分词处理)
{
"query": {
"wildcard": {
"msg.keyword": "*爱学*"
}
}
} 2.match_phrase
match_phrase查询首先解析查询字符串来产生一个词条列表。
然后会搜索所有的词条,但只保留包含了所有搜索词条的文档,并且词条的位置要邻接
"""
#s.query("match", browser="华为浏览器").aggs.bucket("browser", "terms", field="browser.keyword").metric("count_browser", "stats", field="browser.") #s.query("match", browser="华为浏览器").aggs.bucket("pageurl", "terms", field="pageurl.keyword").bucket('browser', 'terms', field='browser.keyword') #s.aggs.bucket("pageurl", "terms", field="pageurl.keyword", size=2).metric("sum_pageurl", "stats", field="pageurl.").bucket('browser', 'terms', field='browser.keyword') # _count 按照数字排,_key 按照字母排序
# s.aggs.bucket("pageurl", "terms", field="pageurl.keyword", order={"_count": "asc"}, size=3).bucket('browser', 'terms', field='browser.keyword') # for hit in s.scan():
# print(hit) s = s.source(include=[""]) # 按照行业统计流量
s.aggs.bucket("industry", "terms", field="industry.keyword").bucket('rsdate', 'terms', field='rsdate') # 添加参数
s = s.params(track_total_hits=True)
# 明确包含/排除字段 include=["browser"], exclude=["p.*"] 可以正则 # 执行
# print(s)
s = s.execute()
# 数据呈现
res = s.to_dict() # for item in s.scan():
# print(item.browser) #print(res) with open('s.txt', 'w', encoding='utf-8') as f:
f.write(str(res))
elasticsearch_dsl 操作的更多相关文章
- Elasticserch与Elasticsearch_dsl用法
Elasticserch与Elasticsearch_dsl用法 Elasticsearch_dsl::https://elasticsearch-dsl.readthedocs.io/en/late ...
- es的查询、排序查询、分页查询、布尔查询、查询结果过滤、高亮查询、聚合函数、python操作es
今日内容概要 es的查询 Elasticsearch之排序查询 Elasticsearch之分页查询 Elasticsearch之布尔查询 Elasticsearch之查询结果过滤 Elasticse ...
- 关于DOM的操作以及性能优化问题-重绘重排
写在前面: 大家都知道DOM的操作很昂贵. 然后贵在什么地方呢? 一.访问DOM元素 二.修改DOM引起的重绘重排 一.访问DOM 像书上的比喻:把DOM和JavaScript(这里指ECMScri ...
- Sql Server系列:分区表操作
1. 分区表简介 分区表在逻辑上是一个表,而物理上是多个表.从用户角度来看,分区表和普通表是一样的.使用分区表的主要目的是为改善大型表以及具有多个访问模式的表的可伸缩性和可管理性. 分区表是把数据按设 ...
- C# ini文件操作【源码下载】
介绍C#如何对ini文件进行读写操作,C#可以通过调用[kernel32.dll]文件中的 WritePrivateProfileString()和GetPrivateProfileString()函 ...
- js学习笔记:操作iframe
iframe可以说是比较老得话题了,而且网上也基本上在说少用iframe,其原因大致为:堵塞页面加载.安全问题.兼容性问题.搜索引擎抓取不到等等,不过相对于这些缺点,iframe的优点更牛,跨域请求. ...
- jquery和Js的区别和基础操作
jqery的语法和js的语法一样,算是把js升级了一下,这两种语法可以一起使用,只不过是用jqery更加方便 一个页面想要使用jqery的话,先要引入一下jqery包,jqery包从网上下一个就可以, ...
- ASP.NET Aries 入门开发教程7:DataGrid的行操作(主键操作区)
前言: 抓紧勤奋,再接再励,预计共10篇来结束这个系列. 上一篇介绍:ASP.NET Aries 入门开发教程6:列表数据表格的格式化处理及行内编辑 本篇介绍主键操作区相关内容. 1:什么时候有默认的 ...
- 如何在高并发环境下设计出无锁的数据库操作(Java版本)
一个在线2k的游戏,每秒钟并发都吓死人.传统的hibernate直接插库基本上是不可行的.我就一步步推导出一个无锁的数据库操作. 1. 并发中如何无锁. 一个很简单的思路,把并发转化成为单线程.Jav ...
随机推荐
- vue页面之间数据的传递
vue是由一个个组件组合而成的页面,今天我们就来说一下页面之间数据的传递. 我们经常会在后台管理系统看到用户详情,有添加用户和编辑用户.有时候我们的添加和编辑是在同一页面上以模态框的形式展现的,但有的 ...
- nginx添加module之threads
一.安装nginx yum安装nginx 折叠源码 1 2 3 4 5 6 7 8 9 10 11 12 # 添加nginx源 rpm -ivh http://nginx.org/packages/c ...
- Linux下部署Django项目
目录 安装python3.X环境 安装部署开启django 由于Linux系统默认自带的是2.X环境,所以我们需要去安装3.X环境的python. 安装python3.X环境 1.使用下面的命令下载P ...
- 1.关于逆向工程(RE、RCE)-笔记
名词 逆向工程(Reverse Engineering,简称RE):代码逆向工程(Reverse Code Engineering,简称RCE). 逆向分析方法 静态分析:不执行代码,观察外部特征.获 ...
- <JVM上篇:内存与垃圾回收篇>04-虚拟机栈
笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机) 同步更新:https://gitee.com/vectorx/NOTE_JVM https://codechina.cs ...
- Failed opening required
报错 点击页面右下角的图标,再点击错误可以显示报错.或者在项目中runtime--log也可以查看error [64]think\\__require_file(): Failed opening r ...
- 解决@Autowired警告
在使用spring框架中的依赖注入注解@Autowired时,idea报了一个警告 被警告的代码如下: @Autowired UserDao userDao; 警告提示信息:Field injecti ...
- 正则表达式:(mysql)REGEXP
检索列prod_name包含文本1000的所以行 SELECT prod_name FROM products WHERE prod_name REGEXP '1000' ORDER BY prod ...
- mysql.data.entityframeworkcore 已弃用
转官网有方案: https://dev.mysql.com/doc/connector-net/en/connector-net-entityframework-core.html General R ...
- K8s Scheduler 在调度 pod 过程中遗漏部分节点的问题排查
问题现象 在TKE控制台上新建版本为v1.18.4(详细版本号 < v1.18.4-tke.5)的独立集群,其中,集群的节点信息如下: 有3个master node和1个worker node, ...