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. sklearn.metrics【指标】

    [分类指标] 1.accuracy_score(y_true,y_pre) : 精度 2.auc(x, y, reorder=False) : ROC曲线下的面积;较大的AUC代表了较好的perfor ...

  2. OO Unit4总结 & 结课总结

    OO Unit4总结 & 结课总结 OO课Unit4 UML解析应用技术回顾 BUAA.1823.邓新宇 2020/6/19 总结本单元三次作业的架构设计 本单元的架构设计主要是两方面. 一方 ...

  3. Python2中的urllib、urllib2和 Python3中的urllib、requests

    目录 Python2.x中 urllib和urllib2 常用方法和类 Python3.x中 urllib requests Python2.x中 urllib和urllib2 urllib 和 ur ...

  4. PWD 好网站

    http://angelboy.logdown.com/ https://wizardforcel.gitbooks.io/sploitfun-linux-x86-exp-tut/content/ h ...

  5. <input type="file" id="fileID">文本框里的值清空方法

    一般情况下,不允许通过脚本来对文件上传框赋值. 下面是一个变通的方法.就是创建一个新的input type="file" 把原来的替换掉. <!DOCTYPE html PU ...

  6. 【python】Leetcode每日一题-旋转链表

    [python]Leetcode每日一题-旋转链表 [题目描述] 给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置. 示例1: 输入:head = [1,2,3,4,5] ...

  7. druid-spring-boot-starter的配置

    #数据源基本信息 spring: datasource: druid: username: root password: 123456 url: jdbc:mysql://localhost:3306 ...

  8. CDH安装步骤

    Six Steps to CDH Installation There are many options and potential paths that make each CDH cluster ...

  9. linux网络编程中INADDR_ANY的含义

    INADDR_ANY选项 网络编程中常用到bind函数,需要绑定IP地址,这时可以设置INADDR_ANY INADDR_ANY就是指定地址为0.0.0.0的地址,这个地址事实上表示不确定地址,或&q ...

  10. 28.HashSet

    4.HashSet集合 4.1HashSet集合概述和特点[应用] 底层数据结构是哈希表 不能保证存储和取出的顺序完全一致 不可以存储重复元素 没有索引,不能使用普通for循环遍历 4.2HashSe ...