Elasticsearch DSL是一个高级库,其目的是帮助编写和运行针对Elasticsearch的查询。它建立在官方低级客户端(elasticsearch-py)之上。

    它提供了一种更方便和习惯的方式来编写和操作查询。它接近Elasticsearch JSON DSL,反映了它的术语和结构。它直接使用定义的类或类似查询集的表达式来暴露从Python的DSL的整个范围。

1.导入包

  1. # 导入包
  2. from elasticsearch import Elasticsearch
  3. from elasticsearch_dsl import Search, Q

2.连接es 并创建dsl 查询

  1. es = Elasticsearch(hosts="http://xxxxx:9222/") # 连接es
  2.  
  3. s = Search(using=es, index="xxxxx") #using: 指定es 引擎 index:指定索引

3.增删改查的基本使用

3.1 创建索引

  首先定义映射关系(也可以不指定,如果想要使用join功能必须手动定义)

  1. # 創建映射
  2. mappings = {
  3. "mappings": {
  4. "data": { # "文档类型"
  5. "properties": {
  6. "xxx": { # "索引名"
  7. "type": "join", # "如果想用join功能必须定义类型为join"
  8. "relations": {
  9. "parent": "child" # 父类对应子类 attr 是父文档 info子文档(自己指定)
  10. }
  11. }
  12. }
  13. }
  14. }
  15. }

创建

  1. # 创建index 库
  2. if es.indices.exists("xxx") is not True:
  3. es.indices.create(index="xxx", body=mappings)

删除

  1. es.delete(index='xxx', doc_type='xxx', id='xxx')

更新

  1. es.update(index='xxx', doc_type='xxx', id='xxx', body={待更新字段})

查询

  查询所有

  1. response = s.params(size=1000).filter("match_all").sort("_id").execute() # 查询1000条数据 并根据_id进行排序
  2.  
  3. #注意: 如果不指定条数 默认只查询10条数据

  根据父级查询子级

  1. response = s.query("has_parent", parent_type="xxx", query={"match": {"id": ""}}).execute()

  根据子级查询父级

  1. response = s.query("has_child", type="xxx", query={"match": {"id": ""}}).execute()

  将查询结果转化为字典

  1. response.to_dict()

python | Elasticsearch-dsl常用方法总结(join为案例)的更多相关文章

  1. python中os常用方法

    python中OS常用方法 Python的标准库中的os模块包含普遍的操作系统功能.如果你希望你的程序能够与平台无关的话,这个模块是尤为重要的.即它允许一个程序在编写后不需要任何改动,也不会发生任何问 ...

  2. Python Elasticsearch api,组合过滤器,term过滤器,正则查询 ,match查询,获取最近一小时的数据

    Python Elasticsearch api   描述:ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.下 ...

  3. python模块之HTMLParser之穆雪峰的案例(理解其用法原理)

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #python模块之HTMLParser之穆雪峰的案例(理解其用法原理) #http://www.cnblog ...

  4. [转]Python多线程与多线程中join()的用法

    https://www.cnblogs.com/cnkai/p/7504980.html Python多线程与多进程中join()方法的效果是相同的. 下面仅以多线程为例: 首先需要明确几个概念: 知 ...

  5. Python Selenium Webdriver常用方法总结

    Python Selenium Webdriver常用方法总结 常用方法函数 加载浏览器驱动: webdriver.Firefox() 打开页面:get() 关闭浏览器:quit() 最大化窗口: m ...

  6. python——flask常见接口开发(简单案例)

    python——flask常见接口开发(简单案例)原创 大蛇王 发布于2019-01-24 11:34:06 阅读数 5208 收藏展开 版本:python3.5+ 模块:flask 目标:开发一个只 ...

  7. python中的常用方法

    1.os模块的常用方法: >>> import os >>> >>> myFiles = ['accounts.txt', 'details.cs ...

  8. Python Elasticsearch api

    描述:ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.下面介绍了利用Python API接口进行数据查询,方便 ...

  9. python 基本数据类型常用方法总结

    [引言] python中基本数据类型的有很多常用方法,熟悉这些方法有助于不仅提升了编码效率,而且能写出高质量代码,本文做总结 int .bit_length:返回二进制长度 str 切片索引超出不会报 ...

随机推荐

  1. Java基础12-工具类;变长参数;IO

    作业解析 取出整数的16进制表示形式 \u00ff /** * int2hex * */ public static String int2hex(int i) { String str = &quo ...

  2. 医学图像数据(二)——TCIA完整数据集下载方式

    1. 构建下载环境 l  TCIA数据集下载文件为.jnlp格式(JNLP(Java Network Launching Protocol )是java提供的一种可以通过浏览器直接执行java应用程序 ...

  3. docker中的镜像中运行Django项目

    首先要在镜像中 安装python3 以及 django2.0.4 目前我用的是这两个版本. 进入镜像 创建项目 进入项目中修改setting文件 将引号和星号添加进括号中 ALLOWED_HOSTS ...

  4. codeforces gym 101611C 重链剖分构造

    给一棵树 要求在一个20*1e6的矩阵上放下这棵树,每个点的坐标都是整数且所有边都不相叉 题解 按照重链遍历,先给轻儿子坐标,然后沿着重儿子向下走即可 #include <bits/stdc++ ...

  5. WEB部分题目writeup

    MEIZIJIU_PHP 题目链接: http://202.112.51.184:20001/ 打开网页出现一段PHP代码: 代码大意就是如果得到的code不为空则执行下列操作: 如果code长度大于 ...

  6. JVM内存模型分析(一个程序运行的例子)

    (.class字节码)类加载到内存之后,内存模型:(ps:.class文件可以通过javap 指令反编译成一个可读文件) 1.java栈,本地方法栈,程序计数器(每个线程私有) 看如下程序: 以该程序 ...

  7. 【Java】「深入理解Java虚拟机」学习笔记(5)- 类加载

    C/C++在编译时需要进行连接,而Java的类加载.连接和初始化是在运行时完成的. 图  类的生命周期 图中解析的过程不一定在准备和初始化之间,也可以在初始化之后再开始,以支持Java的运行时动态绑定 ...

  8. 安装vue错误详情解决办法

    寄语:vue的安装不是理想化的,会出现很多问题,需要静下心认真研究,熬过去就会懂得更多,以下是我遇到的问题和最真挚的建议,按照我的方法不会出错,一定会成功,我尝试了很多次方式,查阅了很多资料,最终总结 ...

  9. requests补充

    HTTP/1.1 协议规定的 HTTP 请求方法有 OPTIONS.GET.HEAD.POST.PUT.DELETE.TRACE.CONNECT 这几种.其中,POST 一般用来向服务端提交数据,本文 ...

  10. xr报表调整

    xr报表调整,此乃为软件应用层调整,非后端数据库调整. 主单付款方式为AR支票300元 应收账务AR支票预付款 3000元录入调整 -300 AR支票付款录入收入 300 现金付款核销掉,报表现金多出 ...