Python Elasticsearch DSL 查询、过滤、聚合操作实例,企业项目怎么写
from datetime import datetime
from elasticsearch_dsl import Search, Q, A
# 假设已经有一个Elasticsearch的Document定义
from my_app.documents import MyDocument
# 初始化搜索对象
s = Search(using='default', index='my_index')
# 定义一个查询过滤器
def apply_filters(s):
# 添加一个布尔查询,可以是must, should, must_not等
s = s.query("bool", should=[Q("match", field1="value1"), Q("match", field2="value2")])
# 添加一个范围过滤器
s = s.filter("range", timestamp={"gte": "now-1d"})
return s
# 应用过滤器
s = apply_filters(s)
# 定义聚合
s.aggs.bucket('my_bucket', 'terms', field='field_for_aggregation')
# 执行搜索
response = s.execute()
# 获取结果
for hit in response:
print(hit.field1, hit.field2)
# 获取聚合结果
aggs_result = response.aggregations.my_bucket
for bucket in aggs_result.buckets:
print(bucket.key, bucket.doc_count)
这个代码示例展示了如何使用Elasticsearch DSL库在Python中构建一个Elasticsearch查询。它包括了查询过滤、聚合操作,并假设有一个已经定义好的Elasticsearch Document。代码简洁,注重逻辑的教学,适合需要在企业项目中应用Elasticsearch的开发者学习参考。
评论已关闭