Elasticsearch-DSL 001


from elasticsearch import Elasticsearch
from elasticsearch_dsl import Search,Q

#导入 Elasticseacrch模块

#导入需要用的Search和Q


client = Elasticsearch()

所有的方法返回的是原对象的拷贝,这样不会在传递时修改原对象


API是可以链接的,允许在一个声明中使用多个方法,如下

s = Search(using = client,index = "properties")\
      .filter("term",category = "search")\
      .query("match",title = "python")\
      .query(~Q("match",description = "beta"))


s.aggs.bucket('per_tag', 'terms', field = 'tags')\
      .metric('max_lines','max',field = 'lines')


response = s.execute()
#把请求送到Elasticseacrh中
for hit in response:
     print(hit.meta.score,hit.title)
#遍历搜索返回的结果

注意:已经搜索的搜索对象的结果将被缓存,再次搜索时不会触发elasticsearch请求,会使用缓存结果,如果不想使用缓存结果,可以在请求执行execute时设置ignore_cache = True。

foe tag in response.aggregations.per_tag.buckets:
      print(tag.key,tag.max_lines.value)



你可能感兴趣的:(Elasticsearch-DSL 001)