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

 

转载于:https://www.cnblogs.com/yinxingpan/p/5366958.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值