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 操作的更多相关文章

  1. Elasticserch与Elasticsearch_dsl用法

    Elasticserch与Elasticsearch_dsl用法 Elasticsearch_dsl::https://elasticsearch-dsl.readthedocs.io/en/late ...

  2. es的查询、排序查询、分页查询、布尔查询、查询结果过滤、高亮查询、聚合函数、python操作es

    今日内容概要 es的查询 Elasticsearch之排序查询 Elasticsearch之分页查询 Elasticsearch之布尔查询 Elasticsearch之查询结果过滤 Elasticse ...

  3. 关于DOM的操作以及性能优化问题-重绘重排

     写在前面: 大家都知道DOM的操作很昂贵. 然后贵在什么地方呢? 一.访问DOM元素 二.修改DOM引起的重绘重排 一.访问DOM 像书上的比喻:把DOM和JavaScript(这里指ECMScri ...

  4. Sql Server系列:分区表操作

    1. 分区表简介 分区表在逻辑上是一个表,而物理上是多个表.从用户角度来看,分区表和普通表是一样的.使用分区表的主要目的是为改善大型表以及具有多个访问模式的表的可伸缩性和可管理性. 分区表是把数据按设 ...

  5. C# ini文件操作【源码下载】

    介绍C#如何对ini文件进行读写操作,C#可以通过调用[kernel32.dll]文件中的 WritePrivateProfileString()和GetPrivateProfileString()函 ...

  6. js学习笔记:操作iframe

    iframe可以说是比较老得话题了,而且网上也基本上在说少用iframe,其原因大致为:堵塞页面加载.安全问题.兼容性问题.搜索引擎抓取不到等等,不过相对于这些缺点,iframe的优点更牛,跨域请求. ...

  7. jquery和Js的区别和基础操作

    jqery的语法和js的语法一样,算是把js升级了一下,这两种语法可以一起使用,只不过是用jqery更加方便 一个页面想要使用jqery的话,先要引入一下jqery包,jqery包从网上下一个就可以, ...

  8. ASP.NET Aries 入门开发教程7:DataGrid的行操作(主键操作区)

    前言: 抓紧勤奋,再接再励,预计共10篇来结束这个系列. 上一篇介绍:ASP.NET Aries 入门开发教程6:列表数据表格的格式化处理及行内编辑 本篇介绍主键操作区相关内容. 1:什么时候有默认的 ...

  9. 如何在高并发环境下设计出无锁的数据库操作(Java版本)

    一个在线2k的游戏,每秒钟并发都吓死人.传统的hibernate直接插库基本上是不可行的.我就一步步推导出一个无锁的数据库操作. 1. 并发中如何无锁. 一个很简单的思路,把并发转化成为单线程.Jav ...

随机推荐

  1. map的遍历方法 map.entrySet()

    代码: @Test public void TestMap() throws Exception { Map<String, String> map = new HashMap<&g ...

  2. Android Studio在android Emulator中运行的项目黑屏

    前言: 最近在做一个Android相关的小项目,因为之前这方面的项目做的比较的少.今天在使用虚拟机调试的时候经常出现一些莫名其妙的问题,经过自己多次的尝试和搜索终于解决了这些问题. 问题: 每次run ...

  3. 05- web网站链接测试与XENU工具使用

    什么是链接 链接也叫超链接,是指从某一个网页元素指向另一个目标的连接关系,这个目标可以是另一个网站的网页,可以是本网站的一个网页,可以使同一个网页的不同位置,还可以是一个图片,一个视频,一个文件甚至是 ...

  4. Linux安装MySQL8高版本压缩包(通用)

    前言 前段时间领导让我部署测试环境,希望安装高版本的MySQL,过程遇到很多问题,特此记录帮助迷失的人们 下载 MySQL官方下载地址:https://dev.mysql.com/downloads/ ...

  5. UVA11997求前k个和,多路归并问题

    题意:      给你一个二维矩阵,n*n的,每次从每一行中拿出来一个,然后加起来组成一个和,一共可以得到n^n个和,要求求出这n^n个和中最小的那n个和. 思路:      多路归并问题,先说下多路 ...

  6. Github搜索语法

    目录 使用 Github 进行邮件配置信息收集 使用Github进行数据库信息收集

  7. [CTF]unicode编码

    [CTF]unicode编码 ---------------------  作者:adversity`  来源:CSDN  原文:https://blog.csdn.net/qq_40836553/a ...

  8. android手势识别

    一.简单手势识别: 简单手势识别分为以下几个步骤: 1.手指触碰屏幕时,触发MotionEvent事件: 2.该事件被OnTouchListener监听,可在它的onTouch()方法中获得该Moti ...

  9. PHP + JQuery 实现多图上传并预览

    简述 PHP + JQuery实现 前台:将图片进行base64编码,使用ajax实现上传 后台:将base64进行解码,存储至文件夹,将文件名称入库 效果图 功能实现 html <!DOCTY ...

  10. Servlet三大域对象

    Servlet三大域对象的应用 request.session.application(ServletContext) ServletContext是一个全局的储存信息的空间,服务器开始就存在,服务器 ...