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

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

1.导入包

# 导入包
from elasticsearch import Elasticsearch
from elasticsearch_dsl import Search, Q

2.连接es 并创建dsl 查询

es = Elasticsearch(hosts="http://xxxxx:9222/")  # 连接es

s = Search(using=es, index="xxxxx")   #using: 指定es 引擎  index:指定索引

3.增删改查的基本使用

3.1 创建索引

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

# 創建映射
mappings = {
"mappings": {
"data": { # "文档类型"
"properties": {
"xxx": { # "索引名"
"type": "join", # "如果想用join功能必须定义类型为join"
"relations": {
"parent": "child" # 父类对应子类 attr 是父文档 info子文档(自己指定)
}
}
}
}
}
}

创建

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

删除

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

更新

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

查询

  查询所有

response = s.params(size=1000).filter("match_all").sort("_id").execute()  # 查询1000条数据 并根据_id进行排序

#注意: 如果不指定条数 默认只查询10条数据

  根据父级查询子级

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

  根据子级查询父级

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

  将查询结果转化为字典

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 activemq初体验

    1.下载安装ActiveMQ ActiveMQ官网下载地址:http://activemq.apache.org/download.html ActiveMQ 提供了Windows 和Linux.Un ...

  2. 搭建Linux运行环境-虚拟机

    1.虚拟机软件介绍 虚拟机(Virtual Machina)软件就是一套特殊的软件,它可以作为系统独立运行,也可以运行与系统之上. 若是运行与系统之上的虚拟机软件,在一台电脑(PC或笔记本等)上安装虚 ...

  3. 基于python的WGS84转百度坐标

    from urllib.request import urlopen, quote import json def wgs84tobaidu(x,y): data=str(x)+','+str(y); ...

  4. SVG初尝试(二)

    基本图形 rect(矩形).circle.ellipse(椭圆).line(直线).polyline(折线).polygon(多边形).path(可以绘制任意图形) rect x,y定义矩形坐标,矩形 ...

  5. httpclient的封装完整版

    applicationContext-httpclient.xml <?xml version="1.0" encoding="UTF-8"?> & ...

  6. css3——border-image属性的用法

    项目需求是实现鼠标移到按钮上时,下方显示一张渐变的三角图片,于是想到使用border-image来实现. 实现;//向外偏移10px,可使边框内部的内容不是那么紧凑border-image-repea ...

  7. Python用可变参数找出最大值和最小值

    # 方法一 利用max min 函数. 注意这里max min 分别都是功能函数 def main_m(*args): i = max(args) j = min(args) print(" ...

  8. adjustsFontSizeToFitWidth 与 NSLineBreakByCharWrapping 无法共用

    newLabel.lineBreakMode = NSLineBreakByCharWrapping; newLabel.text = content; newLabel.adjustsFontSiz ...

  9. webpack打包优化之外部扩展externals的实际应用

    目录 前言 externals定义 用法 string array object function regex 实际案例 打包时间 打包之后包的大小 浏览器加载 需要注意 参考 前言 使用vue-cl ...

  10. ansible安装 使用 介绍

    1.介绍安装 a.介绍 Ansible:—基于 Python paramiko 开发,分布式,无需客户端,轻量级,配置语法使用 YMAL 及 Jinja2模板语言,更强的远程命令执行操作. b.安装 ...