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进行的处理的更多相关文章

  1. 离线pip下载Python包

    离线pip下载Python包   这几天搞Windows离线断网环境下安装Python包,配置环境,各种坑!做个记录,供以后查询吧.      # 生产环境  windows xp# python 2 ...

  2. 【转】linux和windows下安装python集成开发环境及其python包

    本系列分为两篇: 1.[转]windows和linux中搭建python集成开发环境IDE 2.[转]linux和windows下安装python集成开发环境及其python包 3.windows和l ...

  3. RobotFramework中加载自定义python包中的library(一个py文件中有多个类)

    结构如下: appsdk\ appsdk.py(这里面有多个类,包括appsdk,appsdksync等类) __init__.py ... ① 有个appsdk的文件夹(符合python包的定义) ...

  4. centos 7 下安装numpy、scipy等python包

    本文适用于刚入门的小白,欢迎大牛们批评指正. 因为要开始数据分析,而python又不像R和matlab那么简洁.需要安装的包很多~ 网上找了好多牛人博客,想在centos7下安装numpy,scipy ...

  5. python 包管理工具

    python 包管理工具 Python当前的包管理工具链是 easy_install/pip + distribute/setuptools + distutils,显得较为混乱. 而将来的工具链组合 ...

  6. Python 包管理工具解惑

    Python 包管理工具解惑 本文链接:http://zengrong.net/post/2169.htm python packaging 一.困惑 作为一个 Python 初学者,我在包管理上感到 ...

  7. Python 包的相对导入讲解

    [Python 包的相对导入讲解] 参考:http://www.dai3.com/python-import.html

  8. 转: 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/ ...

  9. 纯Python包发布setup脚本编写示例

    如果你有多个模块需要发布,而它们又存在于多个包中,那么指定整个包比指定模块可能要容易地多.即使你的模块并不在一个包内,这种做法也行的通:你可以告诉Distutils从根包(root package)处 ...

随机推荐

  1. 20145218 GDB调试汇编堆栈过程分析

    GDB调试汇编堆栈过程分析 虚拟机中分析过程 输入gcc - g example.c -o example -m32指令在64位机器上产生32位汇编,但出现以下错误: 这时需要使用sudo apt-g ...

  2. jquery trigger 触发事件小计 -- 关于a标签

    jquery -- trigger触发执行事件方法虽然好用,偶尔也会出些小问题. 在最近得一个项目中需要触发a标签的点击事件时,我就遇到了点小问题.我很想当然的写层这样:$("a" ...

  3. 为什么大家都用i标签<i></i>用作小图标?

    用 <i> 元素做图标在语义上是不正确的(虽然看起来像 icon 的缩写): <i> 比 <span> 短,但 gzip 后差异很小,不过打字可以少按三个键: 多数 ...

  4. SQL 子查询,连接查询复习

    use lianxi0720 go --创建部门表 create table bumen ( bcode int primary key,--部门编号 bname ), --部门名称 bceo ), ...

  5. Javascript学习笔记1 javascript的特点

    ..对于网页而言,Javascript无处不在,对于英语不好的人它简直是噩梦般的存在,但形式所逼,今天开始着手学习!希望自己能坚持下去.从什么地方着手,我的目标是从大处着眼,从应用着眼,不抠细节,反正 ...

  6. Android genymotion安装输入法不兼容

    genymotion 此应用与您的手机不兼容 http://blog.csdn.net/caiwenfeng_for_23/article/details/41692923

  7. Xcode模拟器不显示SDK版本,反而显示设备ID的解决办法

    今天在应用程序中修改了Xcode app 的名称,结果导致Xcode模拟器不显示SDK版本,反而显示设备ID了,感觉特别的忧伤......如图: 进到Xcode->window->Devi ...

  8. opencv 小任务1 图片的缩放

    #include <opencv2/opencv.hpp> using namespace std; int main() { double fScale = 0.2; //缩放倍数 Cv ...

  9. F2工作流引擎之组织用户模型(四)

    1 概述 工作流组织模型是工作流引擎中核心重要的一部份,是实现人机交互中不可或缺的组成部分,而由于工作流引擎需要适应不同的系统之间存在组织用户结构的不同, 如组织表中字段名不同,所以需要实现适应不同系 ...

  10. CodeForces #362 div2 B. Barnicle

    题目链接: B. Barnicle 题意:给出科学计数法 转化成十进制的整数或小数 并输出. 思路:暑假训练赛见过了,当时大腿A掉了,并表示是道水题. 刷CF再次遇见,毫不留情WA了几次.比如: 0. ...