Elasticsearch_dsl(python)的搜索|查询|聚合操作实例

本文介绍了在Elasticsearch中使用DSL(Domain Specific Language)进行搜索、查询和聚合操作时的实例和常见问题。在高级设置和性能优化部分进行了探讨,并列举了在实际操作中遇到的bug,包括fielddata限制、数值类型错误以及大小写转换等问题,提供了解决方案和参考资料链接。
摘要由CSDN通过智能技术生成
# 相关导入
import time
from elasticsearch import Elasticsearch
from elasticsearch_dsl import Search

# 创建相关实例
es = Elasticsearch()
# using参数是指定Elasticsearch实例对象,index指定索引,可以缩小范围,index接受一个列表作为多个索引,且也可以用正则表示符合某种规则的索引都可以被索引,如index=["bank", "banner", "country"]又如index=["b*"]后者可以同时索引所有以b开头的索引,search中同样可以指定具体doc-type
s = Search(using=es, index="time_appid_placementid_country")

# 添加索引,其中index和doc_type自己指定一个值即可,id可以指定,如果没有指定elasticsearch会随机分配,body即为索引的内容
dict_1 = {
  "any": "test", "timepstamp": "ddd"}
es.index(index="bank", doc_type="account", id="qwe", body=dict_1)

# 通过id获取特定文档,各参数的意义同上
res = es.get(index="bank", doc_type="account", id=1)

# 根据字段查询,可以多个查询条件叠加,hightlight可以指定高亮,但是我的没有出现高亮,对数据处理没啥用不去深究
# res_2 = s.query("match", gender="F").query("match", age="32").highlight("age").execute()

# 用Q()对象查询多个对象,在多个字段中,fields是一个列表,可以存放多个field,query为所要查询的值,如果要查询多个值可以用空格隔开(似乎查询的时候Q对象只接受同种类型的数据,如果文本和数字混杂在一块就会报错,建立查询语句出错,有待考察,如query="Amber 11"就会失败,fields也是一样,另外query可以接受单个数字的查询,如果是多个同样会报相同的错误)

# Q()第一个参数是查询方法,具体用法及其他方法可以参考elasticsearch的官方文档

q = Q("multi_match", query="Amber Hattie", fields=["firstname"])
res_3 = s.query(q).execute()
  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值