1. 建立连接

from elasticsearch import Elasticsearch

es = Elasticsearch(["localhost:9200"])

2. 查询所有数据

# 方式1:

es.search(index="index_name", doc_type="type_name")

# 方式2:

body = {

"query":{

"match_all":{}

}

}

es.search(index="index_name", doc_type="type_name", body=body)

3. 等于查询,term与terms

# term: 查询 xx = “xx”

body = {

"query":{

"term":{

"name":"python"

}

}

}

# 查询name="python"的所有数据

es.search(index="index_name",doc_type="type_name",body=body)

# terms: 查询 xx = “xx” 或 xx = “yy”

body = {

"query":{

"terms":{

"name":[

"ios","android"

]

}

}

}

# 查询出name="ios"或name="android"的所有数据

es.search(index="index_name",doc_type="type_name",body=body)

4. 包含查询,match与multi_match

# match: 匹配name包含"python"关键字的数据

body = {

"query":{

"match":{

"name":"python"

}

}

}

# 查询name包含python关键字的数据

es.search(index="index_name",doc_type="type_name",body=body)

# multi_match: 在name和addr里匹配包含深圳关键字的数据

body = {

"query":{

"multi_match":{

"query":"深圳",

"fields":["name", "addr"]

}

}

}

# 查询name和addr包含"深圳"关键字的数据

es.search(index="index_name",doc_type="type_name",body=body)

5. ids

body = {

"query":{

"ids":{

"type":"type_name",

"values":[

"1","2"

]

}

}

}

# 搜索出id为1或2的所有数据

es.search(index="index_name",doc_type="type_name",body=body)

6. 复合查询bool

bool有3类查询关系,must(都满足),should(其中一个满足),must_not(都不满足)

body = {

"query":{

"bool":{

"must":[

{

"term":{

"name":"python"

}

},

{

"term":{

"age":18

}

}

]

}

}

}

# 获取name="python"并且age=18的所有数据

es.search(index="index_name",doc_type="type_name",body=body)

7. 切片式查询

body = {

"query":{

"match_all":{}

}

"from":2 # 从第二条数据开始

"size":4 # 获取4条数据

}

# 从第2条数据开始,获取4条数据

es.search(index="index_name",doc_type="type_name",body=body)

8. 范围查询

body = {

"query":{

"range":{

"age":{

"gte":18, # >=18

"lte":30 # <=30

}

}

}

}

# 查询18<=age<=30的所有数据

es.search(index="index_name",doc_type="type_name",body=body)

9. 前缀查询

body = {

"query":{

"prefix":{

"name":"p"

}

}

}

# 查询前缀为"赵"的所有数据

es.search(index="index_name",doc_type="type_name",body=body)

10. 通配符查询

body = {

"query":{

"wildcard":{

"name":"*id"

}

}

}

# 查询name以id为后缀的所有数据

es.search(index="index_name",doc_type="type_name",body=body)

11. 排序

body = {

"query":{

"match_all":{}

}

"sort":{

"age":{ # 根据age字段升序排序

"order":"asc" # asc升序,desc降序

}

}

}

# 多字段排序,注意顺序!写在前面的优先排序

body = {

"query":{

"match_all":{}

}

"sort":[{

"age":{ # 先根据age字段升序排序

"order":"asc" # asc升序,desc降序

}

},{

"name":{ # 后根据name字段升序排序

"order":"asc" # asc升序,desc降序

}

}],

}

12. filter_path, 响应过滤

# 只需要获取_id数据,多个条件用逗号隔开

es.search(index="index_name",doc_type="type_name",filter_path=["hits.hits._id"])

# 获取所有数据

es.search(index="index_name",doc_type="type_name",filter_path=["hits.hits._*"])

13. count, 执行查询并获取该查询的匹配数

# 获取数据量

es.count(index="index_name",doc_type="type_name")

14. 度量类聚合

14.1. 获取最小值

body = {

"query":{

"match_all":{}

},

"aggs":{ # 聚合查询

"min_age":{ # 最小值的key

"min":{ # 最小

"field":"age" # 查询"age"的最小值

}

}

}

}

# 搜索所有数据,并获取age最小的值

es.search(index="index_name",doc_type="type_name",body=body)

14.2. 获取最大值

body = {

"query":{

"match_all":{}

},

"aggs":{ # 聚合查询

"max_age":{ # 最大值的key

"max":{ # 最大

"field":"age" # 查询"age"的最大值

}

}

}

}

# 搜索所有数据,并获取age最大的值

es.search(index="index_name",doc_type="type_name",body=body)

14.3. 获取和

body = {

"query":{

"match_all":{}

},

"aggs":{ # 聚合查询

"sum_age":{ # 和的key

"sum":{ # 和

"field":"age" # 获取所有age的和

}

}

}

}

# 搜索所有数据,并获取所有age的和

es.search(index="index_name",doc_type="type_name",body=body)

14.4. 获取平均值

body = {

"query":{

"match_all":{}

},

"aggs":{ # 聚合查询

"avg_age":{ # 平均值的key

"sum":{ # 平均值

"field":"age" # 获取所有age的平均值

}

}

}

}

# 搜索所有数据,获取所有age的平均值

es.search(index="index_name",doc_type="type_name",body=body)

15. from、size

from:从“第几条”开始查询

size:查询多少条

body = {

"query":{

"match_all":{}

},

"size":"50",

"from":"0"

}

原文连接:

python elasticsearch dsl_python 查询 elasticsearch 常用方法(Query DSL)相关推荐

  1. Elasticsearch学习1 入门进阶 Linux系统下操作安装Elasticsearch Kibana 初步检索 SearchAPI Query DSL ki分词库 自定义词库

    文章目录 一.全文检索-Elasticsearch 1.Elasticsearch简介 2.全文搜索引擎 二.docker安装 1.elasticsearch启动 2.kibana启动 三.[入门]初 ...

  2. Elasticsearch搜索引擎第十篇-Query DSL详解

    文章目录 DSL介绍 Match all query 全文查询 match query match phrase query match phrase prefix query multi match ...

  3. Elasticsearch Query DSL基础介绍

    查询语法(Query DSL) Elasticsearch提供标准RESTful风格的查询DSL来定义查询.可以将查询 DSL 看作是由两种子句组成的查询的 AST (Abstract Syntax ...

  4. elasticsearch系列四:搜索详解(搜索API、Query DSL)

    一.搜索API 1. 搜索API 端点地址 从索引tweet里面搜索字段user为kimchy的记录 GET /twitter/_search?q=user:kimchy 从索引tweet,user里 ...

  5. Elasticsearch通关教程(五):如何通过SQL查询Elasticsearch

    2019独角兽企业重金招聘Python工程师标准>>> 这篇博文本来是想放在全系列的大概第五.六篇的时候再讲的,毕竟查询是在索引创建.索引文档数据生成和一些基本概念介绍完之后才需要的 ...

  6. 第三章 Elasticsearch Query DSL -- 查询

    第三章 Elasticsearch Query DSL -- 查询 摘要 查询和过滤的上下文(context) 相关性得分 查询上下文 过滤上下文 示例(下面这些查询参数,后续会详述) 全文查询 in ...

  7. ElasticSearch高级 (Query DSL查询 bulk批量操作 导入数据 各种查询 实战技巧-优化比重 全量与增量数据同步)

    ElasticSearch高级 01-Query DSL(Domain Specific Language) 1 查询上下文 2 相关度评分:_score 3 元数据:_source 4 Query ...

  8. Elasticsearch高级查询Query DSL

    一.高级查询Query DSL简介 1.Query DSL(简介 Elasticsearch中提供了一种强大的检索数据方式,这种检索方式称之为Query DSL(Domain Specified La ...

  9. elasticsearch in查询_Python Elasticsearch DSL 查询、过滤、聚合操作实例

    技术博客: https://github.com/yongxinz/tech-blog 同时,也欢迎关注我的微信公众号 AlwaysBeta,更多精彩内容等你来. Elasticsearch 基本概念 ...

  10. spring elasticsearch 按条件删除_Elasticsearch系列之Query DSL

    1 前言 我们先通过阅读官方文档,了解一下什么是 Query DSL . 1.1 Query DSL Elasticsearch provides a full Query DSL (Domain S ...

最新文章

  1. 创建符合标准的、有语意的HTML页面——ASP.NET 2.0 CSS Friendly Control Adapters 1.0发布...
  2. 【博客话题】我与Linux的不解情缘
  3. javascript系列--javascript数组的常用算法解析
  4. 计算机网络网关作用,默认网关的作用
  5. (太棒了)程序员的十个层次 你属于哪一层?
  6. MyBatis-Plus_快速入门0222
  7. 松哥整理了 15 道 Spring Boot 高频面试题,看完当面霸
  8. TSP问题详解(旅行商问题)
  9. 分形艺术能让你感受上帝的力量——新锐100设计师风达专访
  10. 如何知道计算机是否支持64位,使用鲁大师怎么查看电脑CPU是否支持64位系统?...
  11. 精彩的“利益均衡”,尤其是“四”
  12. Python绘制小红花
  13. dd指令打包iso文件 linux_Linux_如何在Linux操作系统下创建ISO镜像文件,1、用dd命令#dd if=/dev/cdrom - phpStudy...
  14. ios中头文件交叉导入问题
  15. 深入理解《hello world》是如何实现的
  16. 计算机操作系统唤醒原语,计算机操作系统原语分析(范文).doc
  17. linux系统及应用ppt下载地址,[计算机软件及应用]Linux操作系统.ppt
  18. C语言读配置文件-自动封装Windows系统服务--20210512
  19. Site-to-Site VPN配置和调试实践:构建安全的远程网络连接
  20. 【kali-密码攻击】(5.1.2)密码在线破解:Medusa

热门文章

  1. Python scapy网络包嗅探模块(转载)
  2. Cocos2D-X2.2.3学习笔记9(处理重力感应事件,移植到Android加入两次返回退出游戏效果)...
  3. Hessian——轻量级的二进制协议远程调用实现方案
  4. fio性能测试工具新添图形前端gfio
  5. continue,return,break 在for循环中的作用
  6. Mybatis的xml映射文件,sql的模糊查询的实现(两种方式)占位符拼接,concat关键字
  7. 计算机制作培训通知知识点,计算机学习计划(通用3篇)
  8. sqlite3_get_table()
  9. 转载 侃一侃编译原理的“文法” 作者 :博客网 my笔触
  10. 学以致用二---配置Centos7.2 基本环境