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为案例)的更多相关文章
-
python中os常用方法
python中OS常用方法 Python的标准库中的os模块包含普遍的操作系统功能.如果你希望你的程序能够与平台无关的话,这个模块是尤为重要的.即它允许一个程序在编写后不需要任何改动,也不会发生任何问 ...
-
Python Elasticsearch api,组合过滤器,term过滤器,正则查询 ,match查询,获取最近一小时的数据
Python Elasticsearch api 描述:ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.下 ...
-
python模块之HTMLParser之穆雪峰的案例(理解其用法原理)
# -*- coding: utf-8 -*- #python 27 #xiaodeng #python模块之HTMLParser之穆雪峰的案例(理解其用法原理) #http://www.cnblog ...
-
[转]Python多线程与多线程中join()的用法
https://www.cnblogs.com/cnkai/p/7504980.html Python多线程与多进程中join()方法的效果是相同的. 下面仅以多线程为例: 首先需要明确几个概念: 知 ...
-
Python Selenium Webdriver常用方法总结
Python Selenium Webdriver常用方法总结 常用方法函数 加载浏览器驱动: webdriver.Firefox() 打开页面:get() 关闭浏览器:quit() 最大化窗口: m ...
-
python——flask常见接口开发(简单案例)
python——flask常见接口开发(简单案例)原创 大蛇王 发布于2019-01-24 11:34:06 阅读数 5208 收藏展开 版本:python3.5+ 模块:flask 目标:开发一个只 ...
-
python中的常用方法
1.os模块的常用方法: >>> import os >>> >>> myFiles = ['accounts.txt', 'details.cs ...
-
Python Elasticsearch api
描述:ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.下面介绍了利用Python API接口进行数据查询,方便 ...
-
python 基本数据类型常用方法总结
[引言] python中基本数据类型的有很多常用方法,熟悉这些方法有助于不仅提升了编码效率,而且能写出高质量代码,本文做总结 int .bit_length:返回二进制长度 str 切片索引超出不会报 ...
随机推荐
-
Unity3D - Animator Controller循环依赖
问题 假设有2个Animator Controller,分别命名为TestControllerLhs.controller以及TestControllerRhs.controller.在TestCon ...
-
Mego(07) - 关系配置
这个是本框架的重要功能,该关系就是指对象中的复杂对象或集合属性,该关系与EF中的关系是有区别的.EF中强调关系的成对出现,这是由于数据库关系的思想决定的.然而Mego更接近与对象化逻辑,我们只关心当前 ...
-
Python 基础【一】
python运行流程 一.变量及注释 命名: 合法-变量名由字母.数字和下划线组成,并且不能以数字开头.以下保留字不可以当变量名: ['False', 'None', 'True', 'and', ' ...
-
Android assets的一个bug
摘要 Android assets目录下资源文件超过1MB的问题. 由于要显示一些奇奇怪怪的日文字符,我们在应用里放了一个字库文件,譬如叫做jp.ttf,放在assets目录下打包. 开发.调试一切正 ...
-
新版的 Springsecurity request.getRequestDispatcher).forward(request, response); 404 问题,已解决
旧版本的 可以直接 转发登陆 request.getRequestDispatcher).forward(request, response); 新版本的转发会404,原因 SpringSecurit ...
-
H5判断网络状态
1.判断网络连接的网络状态 if (navigator.onLine) { alert('online')} else { alert('offline');} 想要监听浏览器的联网状态, 使用win ...
-
List遍历Java 8 Streams map() examples
1. A List of Strings to Uppercase 1.1 Simple Java example to convert a list of Strings to upper case ...
-
Spring-JDBC配置
以C3P0连接池为例:由于C3P0是第三方,我们无法使用注解将其定义为bean,因此需要在applicationContext.xml中配置: <!-- 导入配置文件 --> <co ...
-
jquery-validation验证插件
参考网站:菜鸟教程 一.导入js <script src="http://static.runoob.com/assets/jquery-validation-1.14.0/lib/j ...
-
vsftpd安装配置虚拟用户
原文发表于cu:2016-03-11 参考文档: FTP原理:http://vbird.dic.ksu.edu.tw/linux_server/0410vsftpd_1.php FTP配置:http: ...