es中bool复合查询和match_phrase精确匹配性能对比

第一种是bool复合查询must:如果有多个条件,这些条件都必须满足 and与,性能的话如下图

# -*- coding: utf-8 -*-
import time
from connecting import es

start_time = time.time()
search_query = {
  "query": {
    "bool": {
      "must":[
{"match":{
    "domain":"torum43tajnrxritn4iumy75giwb5yfw6cjq2czjikhtcac67tfif2yd.onion"}},
{"match":{
    "topic_id":"3911"}}
  ]
    }
  }
}
r = es.search(index='topic', doc_type='_doc', body=search_query, timeout='50m')
res_lst = r["hits"]["hits"]
for rec in res_lst:
    print(rec["_source"]["url"])
    end_time = time.time()
    print(end_time - start_time)

在这里插入图片描述
第二种match_phrase精确匹配,xxxx是你查询的关键词但也会匹配到xxxxyyyy这种,性能如下图

# -*- coding: utf-8 -*-
import time
from connecting import es


start_time = time.time()
search_query = {
    "query": {
        "match_phrase": {
            "topic_id": {
                "query": '3911'
            }
        }
    }
}
r = es.search(index='topic', doc_type='_doc', body=search_query, timeout='50m')
res_lst = r["hits"]["hits"]
for rec in res_lst:
    print(rec["_source"]["url"])
    end_time = time.time()
    print(end_time - start_time)

在这里插入图片描述
显然bool复合查询多指定了个条件后性能是优于match_phrase的精确匹配的,两种查询方式都有特定的应用场合具体还要看应用场景

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值