elasticsearch,python包pyes进行的处理
elasticsearch:高性能搜索引擎,官网:https://www.elastic.co/products/elasticsearch/
对于它相信大家都不陌生,es的使用已经广泛存在 各大网站中。对于python的支持也有很多优秀的框架,如pyes,elasticsearch等
杂家使用最新的es2.2并本地集群。pyes最新版本0.99.5
可以自信的说,如果你想通过中文搜索查出pyes的使用文章,本篇将是最新的,可使用的文章。
由于网上基本找不到相关中文文章支持最新的2.2es和pyes0.99,我从github上认真浏览了作者的test。
1:创建删除 index
conn = pyes.ES(ES_PATH, timeout=200.0)
conn.indices.create_index(name)
#主动创建mapping #name,index的name,index_type为您自己设定的type,FIELD_MAPPING 为您的mapping设计
conn.indices.put_mapping(index_type, {'properties':FIELD_MAPPING}, [name])
删除index
conn.indices.delete_index(index_name)
2:插入数据:es支持多中数据类型,你可以仔细浏览es官网的mapping field介绍
conn.index(params,index_name,index_type)
#params 为插入数据的字典类型
#如您的mapping设计如下
index_mapping = {
"id" :
{"index":"no","type":u'integer'},
"sha1" :
{"index":"analyzed","type":u'string','store': 'yes'},
#标题
"title":
{"index":"analyzed","type":u'string','store': 'yes',},
#作者
"author" :
{"index":"analyzed","type":u'string','store': 'yes',},
#创建时间
"creation_time" :
{"index":"analyzed","type":u'date'},
}
您的params 将为 params_dic = {"id":"123","sha1":"sfsafsfsdfd","title":"我是银哥哥","author":"yingege","creation_time":datatime(2016,1,23)}
3:简单的term查询
q = TermQuery(field, query)
results = conn.search(query = q,indices=index_name,doc_types=index_type)
循环即可得到所有的results数据
4:bool查询即进行 and or not处理查询
must1 = pyes.TermQuery(field1,query1)
must2 = pyes.TermQuery(field2,query2)
must= [must1,must2]
query = pyes.BoolQuery(must = must)
conn.search(query = query,indices = index_name,doc_types = index_type)
如何你and的条件多个,append must列表即可
接下来就是 参数must_not,should了,您可以清楚的了解到 or=should,must_not = not了
5:排序查询 SortOrder类,具体定义您可以help(SortOrder)查看他的源码定义
search = Search(query)
sort_order = SortOrder(sort_field, sort_type)
search.sort.add(sort_order)
conn.search(search,indices=index_name)
上面的query及为 bool查询query,或者term查询
sort_type 当然是排序类型。desc,asc等,具体可以查看es官网:https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-sort.html
当然以后官网更新了,大家可以去具体查找。
6:range范围查询,
有时间范围查询,pyes.RangeQuery(pyes.ESRange(field, from_value=start_date, to_value=end_date))
地理位置范围查询,这个具体和 GeoPolygonFilter类相关
7:匹配查询MatchQuery
此查询可以应用在 系统的用户搜索功能上:
matchq = MatchQuery(field,'hhhh')
conn.search(matcdq)
8:django类型model查询
from pyes.queryset import generate_model
generate_model(index_name, index_type,es_url=ES_PATH)
这样的话,上面的返回值即可使用django的orm查询了。如:
article = generate_model(index_name, index_type,es_url=ES_PATH)
article_all = article.objects.all()
其他 article.objects.filter()
下一章:银哥哥具体描述pyes的其他支持,如raw_search等的应用。如果对es知识不了解的,大家可以逛逛官网,看看神奇的DSL
elasticsearch,python包pyes进行的处理的更多相关文章
- 离线pip下载Python包
离线pip下载Python包 这几天搞Windows离线断网环境下安装Python包,配置环境,各种坑!做个记录,供以后查询吧. # 生产环境 windows xp# python 2 ...
- 【转】linux和windows下安装python集成开发环境及其python包
本系列分为两篇: 1.[转]windows和linux中搭建python集成开发环境IDE 2.[转]linux和windows下安装python集成开发环境及其python包 3.windows和l ...
- RobotFramework中加载自定义python包中的library(一个py文件中有多个类)
结构如下: appsdk\ appsdk.py(这里面有多个类,包括appsdk,appsdksync等类) __init__.py ... ① 有个appsdk的文件夹(符合python包的定义) ...
- centos 7 下安装numpy、scipy等python包
本文适用于刚入门的小白,欢迎大牛们批评指正. 因为要开始数据分析,而python又不像R和matlab那么简洁.需要安装的包很多~ 网上找了好多牛人博客,想在centos7下安装numpy,scipy ...
- python 包管理工具
python 包管理工具 Python当前的包管理工具链是 easy_install/pip + distribute/setuptools + distutils,显得较为混乱. 而将来的工具链组合 ...
- Python 包管理工具解惑
Python 包管理工具解惑 本文链接:http://zengrong.net/post/2169.htm python packaging 一.困惑 作为一个 Python 初学者,我在包管理上感到 ...
- Python 包的相对导入讲解
[Python 包的相对导入讲解] 参考:http://www.dai3.com/python-import.html
- 转: CentOS 6.4安装pip,CentOS安装python包管理安装工具pip的方法
from: http://www.linuxde.net/2014/05/15576.html CentOS 6.4安装pip,CentOS安装python包管理安装工具pip的方法 2014/05/ ...
- 纯Python包发布setup脚本编写示例
如果你有多个模块需要发布,而它们又存在于多个包中,那么指定整个包比指定模块可能要容易地多.即使你的模块并不在一个包内,这种做法也行的通:你可以告诉Distutils从根包(root package)处 ...
随机推荐
- SPSS数据分析—两阶段最小二乘法
传统线性模型的假设之一是因变量之间相互独立,并且如果自变量之间不独立,会产生共线性,对于模型的精度也是会有影响的.虽然完全独立的两个变量是不存在的,但是我们在分析中也可以使用一些手段尽量减小这些问题产 ...
- jq中数组应用的错误
js中数组可以这样使用: <ul id="ul"> <li value="1">s</li> <li>f< ...
- 查看Linux是32位还是64位
最直接简洁的办法: 在linux终端输入getconf LONG_BIT命令 如果是32位机器,则结果为32 [root@localhost ~]# getconf LONG_BIT 32 如果是64 ...
- 支付宝WAP支付接口开发(Node/Coffee语言)
此博客不更新很久了, 更新的文档在这, 有兴趣到这里围观: http://neutra.github.io/2013/%E6%94%AF%E4%BB%98%E5%AE%9DWAP%E6%94%AF%E ...
- .net乱码问题
最近在给一个客户做framwwork版本升级,从1.0版本升级到4.0版本,发现最大的问题就是乱码. 在1.0版本下,gb2312编码能够运行得很好,可是升级到4.0后就都是乱码. 随后将webcon ...
- [MISS静IOS开发原创文摘]-AppDelegate存储全局变量和 NSUserDefaults standardUserDefaults 通过模型保存和读取数据,存储自定义的对象
由于app开发的需求,需要从api接口获得json格式数据并保存临时的 app的主题颜色 和 相关url 方案有很多种: 1, 通过AppDelegate保存为全局变量,再获取 2,使用NSUSerD ...
- Android笔记——在布局文件中插入另一个布局文件
假如有一个布局文件A.xml想把另外一个布局文件B.xml引进其布局,则可以通过下面的代码 <include layout="@layout/B" />
- YII2 缩略图生成 第三方包修改
"xj/yii2-thumb-action": "^2.0" 原本的上传路径是全路径 根据日期生成的上传文件夹 不适用 比如 : upload\article\ ...
- ASP.NET中Onclick和OnserverClick事件的区别
对于服务器按钮控件(即<asp:Button>类型的按钮): 服务器响应事件:OnClick 客户端响应属性:OnClientClick 对于html按钮控件(即<input typ ...
- AtCoder Grand Contest 6
A - Prefix and Suffix 题意:输入一个整形变量n和两个字符串s,t,使用一些规则求满足条件的最短字符串的长度:规则如下:这个最短字符串的长度不能小于n:它的前n个字符必须与s相同: ...