用写sql的思路写 Elasticsearch 的DSL

1 篇文章 0 订阅
1 篇文章 0 订阅


先挖坑,慢慢填

Elasticsearch的DSL

基础操作

GET 
POST 
DELETE 
PUT 
HEAD 

基础查询

dsl = {

}

筛选查询

1.字段内容等于
2.字段内容包含
3.包含指定字段名
4.kibana查询条件直接使用到DSL中
5.limit记录条数查询:size

多条件教材筛选

1.或条件
2.非条件
3.与条件

聚合查询

1.按时间字段聚合
2.按字段的枚举值聚合
3.去重统计

排序

Elasticsearch分页查询

  1. 针对原始记录
def select_es_by_scroll(es_url, dsl):
    # 记录上限
    MAX_PAGE_NUM = dsl['size'] = 10000
    resp = requests.get(es_url,json=dsl)
    resp.raise_for_status()
    resp_base = resp.json()
    result_json = resp_base['hits']['hits']
    sid = resp_base['_scroll_id']

    if resp_base.get('hits').get('total') > MAX_PAGE_NUM:
        # 循环的初始化
        scroll_dsl = {'scroll_id': sid}
        scroll_es_url = re.sub('arius/.*/_search','arius/_search/scroll',es_url)
        print(scroll_es_url)
        
        while len(resp_base['hits']['hits']) > 0:
            resp = requests.get(scroll_es_url,json=scroll_dsl)
            resp.raise_for_status()
            resp_base = resp.json()
            # 结果输出
            result_json = result_json + resp_base['hits']['hits']
            print(len(result_json))
        # delete _scroll_id
        requests.delete(scroll_es_url,json=scroll_dsl)
        return result_json
    else:
        return result_json
  1. 针对聚合结果的数据分页查询
# 已经遇到了该问题,还没有解决

kibana可视化图表配置

(这个可以单开一个的吧)

参考链接:

  1. ElasticSearch 官方文档
  2. elasticsearch - query-dsl
  3. ElasticSearch 中文文档
  4. 全文搜索引擎 Elasticsearch 入门教程-阮一峰
  5. elasticsearch中查询/删除不包含某个字段的document
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值