python 操作 ES 一、基础操作
示例代码环境 python:3.8 es:7.8.0
环境安装
pip install elasticsearch==7.8.0
from elasticsearch import Elasticsearch #1、创建ES对象,创建连接
es = Elasticsearch(['127.0.0.1:9200'],ignore=[400, 405, 502])
print('---------------1--------------------------') # 2、创建索引index:索引的名字,ignore:状态码
result=es.indices.create(index="user",ignore=400)
print(result)
print('---------------2--------------------------') # 3、删除索引
result = es.indices.delete(index='user', ignore=[400, 404])
print(result)
print('-----------------3------------------------') #4、新增
#es.index,向指定索引添加或更新文档,如果索引不存在,首先会创建该索引,然后再执行添加或者更新操作。
print(es.index(index='w2', doc_type='_doc', id='4', body={"name":"可可", "age": 18})) # 正常
print(es.index(index='w2', doc_type='_doc', id=5, body={"name":"卡卡西", "age":22})) # 正常
print(es.index(index='w2', doc_type='_doc', body={"name": "鸣人", "age": 22})) # 可以不指定id,默认生成一个id
print('-----------------4------------------------') #5、查询
#5.1 es.get,查询索引中指定文档 主键查询
print(es.get(index='w2', doc_type='_doc', id=5))
#print(es.get(index='w2', doc_type='doc')) # TypeError: get() missing 1 required positional argument: 'id'
#print(es.get(index='w2', id=5)) # TypeError: get() missing 1 required positional argument: 'doc_type'
print('-----------------5------------------------') #5.2 es.search,执行搜索查询并获取与查询匹配的搜索匹配。这个用的最多,可以跟复杂的查询条件。
'''
index要搜索的以逗号分隔的索引名称列表; 使用_all 或空字符串对所有索引执行操作。
body 使用Query DSL(QueryDomain Specific Language查询表达式)的搜索定义。
_source 返回指定字段。
excludes 返回的所有字段中,排除哪些字段。
includes从_source字段中提取和返回的字段列表,跟_source差不多
''' #一般查询
body = {
"query": {
"match": {
"age": 22
}
}
}
print(es.search(index='w2', body=body))
#查询所有
body = {
"query": {
"match_all": {}
}
}
print(es.search(index='w2', body=body))
# #与上一条等价
print(es.search(index='w2', body={"query": {"match":{"age": 18}}} ) )
# # 结果字段过滤
print(es.search(index='w2', body={"query": {"match":{"age": 18}}},_source=['name', 'age']))
# # 结果字段过滤
print(es.search(index='w2', body={"query": {"match":{"age": 18}}},_source=['name'])) #使用includes 指定返回字段
body1 ={
"_source": {
"includes": ["age"]
},
"query": {
"match": {
"age": 18
}
}
}
print(es.search(index='w2', body=body1)) #excludes 返回的所有字段中,排除哪些字段
body2 ={
"_source": {
"excludes": ["age"]
},
"query": {
"match": {
"age": 18
}
}
}
print(es.search(index='w2', body=body2)) #测试 模糊查询 name只输入“卡” 可以查出name=“卡卡西”的数据
body3 ={
"query": {
"match": {
"name": "卡"
}
}
}
print(es.search(index='w2', body=body3)) #5.3 get_source,通过索引、类型和ID获取文档的来源,其实,直接返回想要的字典。 对比如下结果
print(es.get(index='w2', doc_type='_doc', id=5))
print(es.get_source(index='w2', id=5)) #5.4 es.count,执行查询并获取该查询的匹配数。比如查询年龄是18的文档。
body4 = {
"query": {
"match": {
"age": 18
}
}
}
print(es.count(index='w2', body=body4)) # {'count': 1, '_shards': {'total': 5, 'successful': 5, 'skipped': 0, 'failed': 0}}
print(es.count(index='w2', body=body4)['count']) # 1 # 6 es.delete,删除指定的文档。比如删除文章id为4的文档,但不能删除索引,如果想要删除索引,还需要es.indices.delete来处理
print(es.index(index='w2', doc_type='_doc', id=6, body={"name":"yc", "age": 18}))
print(es.get(index='w2', doc_type='_doc', id=6))
print(es.delete(index='w2', id=6))
print(es.get(index='w2', doc_type='_doc', id=6)) #查询不存在的会报错 # 7 es.delete_by_query,删除与查询匹配的所有文档。
'''
index 要搜索的以逗号分隔的索引名称列表; 使用_all 或空字符串对所有索引执行操作。
body 使用Query DSL的搜索定义。
'''
#print(es.search(index='w2'))
print(es.delete_by_query(index='w2', body={"query": {"match":{"age": 22}}}))
print(es.search(index='w2')) # 8 es.exists,查询elasticsearch中是否存在指定的文档,返回一个布尔值。
print(es.exists(index='w2', id='4')) # 9 es.info,获取当前集群的基本信息。
print(es.info()) # 10 es.ping,如果群集已启动,则返回True,否则返回False。
print(es.ping())
python 操作 ES 一、基础操作的更多相关文章
- python中文件的基础操作
打开文件的三种方式: open(r'E:\学习日记\python\code\文件的简单操作.py') open('E:\\学习日记\\python\\code\\文件的简单操作.py') open(' ...
- Python学习---Django的基础操作180116
Django创建数据库操作 django流程之model实例 settigs.py:更改Django2.0.1的配置,更新为之前的路径配置 'DIRS': [os.path.join(BASE_DIR ...
- python操作mongodb之基础操作
#coding:utf-8 __author__ = 'hdfs' import pymongo from pymongo import MongoClient client = MongoClien ...
- python中字典的基础操作
dict1 = { 'name':'王麻子', 'age':25, 'phone':12580, 'high':160 } dict2 = { 'name':'张三', 'age':38, 'phon ...
- JSP中的数据库操作,MySQL基础操作(一)
一.JDBC JDBC(java data base concectivity),是一种用于执行SQL语句的java API,可以为多种关系库提供统一访问. 通常使用JDBC完成以下操作: 1)同数据 ...
- Linux基础操作文件等基础操作
作业一: 1) 将用户信息数据库文件和组信息数据库文件纵向合并为一个文件/1.txt(覆盖) [root@bogon /]# cd /etc [root@bogon etc]# cat passwd ...
- python基础操作以及hdfs操作
目录 前言 基础操作 hdfs操作 总结 一.前言 作为一个全栈工程师,必须要熟练掌握各种语言...HelloWorld.最近就被"逼着"走向了python开发之路, ...
- postgresql数据库学习-win平台下SQLshell基础操作及语法
由于在学习https://www.bilibili.com/video/av24590479小马视频时, up主采用的linux虚拟机进行教学, 而本人采用window7进行操作,故在基础操作和语法上 ...
- Elasticsearch学习系列二(基础操作)
本文将分为3块讲解Es的基础操作.分别为:索引(index).映射(mapping).文档(document). 索引操作 创建索引库 语法: PUT /索引名称{ "settings&qu ...
- MYSQL基础操作
MYSQL基础操作 [TOC] 1.基本定义 1.1.关系型数据库系统 关系型数据库系统是建立在关系模型上的数据库系统 什么是关系模型呢? 1.数据结构可以规定,同类数据结构一致,就是一个二维的表格 ...
随机推荐
- Syntax Error: Error: Cannot find module ‘node-sass‘
出现问题原因: vscode运行前端项目输入npm run dev命令触发此错误 解决办法: 指定淘宝镜像安装node-sass win+r 打开cmd控制台输入 npm install -g cnp ...
- qt元对象系统之 Q_PROPERTY宏
这个宏需要和Q_OBJECT宏结合使用, moc工具为Q_OBJECT宏所声明的变量和函数生成定义 同时为Q_PROPERTY宏添加函数的映射,以便qt_static_metacall 能够寻找到对应 ...
- selenium结合tenacity的retry实现验证码失败重试
说在前面 验证码登录的demo后续可以单独讲解,VIP学员对这部分应该都是掌握的,此处不再赘述 本文假设了一个场景 你通过OCR识别的验证码是有一定的错误几率的 本文是通过识别后的验证码去加一个随机字 ...
- RabbitMQ 延迟消息实战
RabbitMQ 延迟消息实战 现实生活中有一些场景需要延迟或在特定时间发送消息,例如智能热水器需要 30 分钟后打开,未支付的订单或发送短信.电子邮件和推送通知下午 2:00 开始的促销活动. Ra ...
- PHP封装自定义函数function
最近一直在看PHP教程,毕竟懂点PHP语言还是不错的选择,起初是准备制作一个三文件夹内关键词组合长尾关键词,然后用PHP做一个全站的动态聚合页面的一个PHP插件,不负有心人啊!已写好,稍晚整理会在资源 ...
- 权限维持之:SID History 域控权限维持
目录 1 SID 作用 2 利用 SID History 操作过程 3 SID History 权限维持的防御 1 SID 作用 每个用户都有自己的SID,SID的作用主要是跟踪安全主体控制用户连 ...
- Json.stringfiy json未定义
在文档的顶部添加 <!DOCTYPE html> 没有它,IE10是一个奇怪的兼容模式,许多"新"功能不可用,例如JSON.如果你任然需要使用早期版本的IE,你可以使用 ...
- Vue学习笔记之Hello Vue
1. 引言 Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架.与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用.Vue 的核心库只关注视图层,不仅易于上 ...
- 记录一个cpu彪高的BUG处理--jvm调优
业务场景:游戏行业,N个服务器,要进行大批量的合服处理,玩家数据会上升,从新整理和服务器的分配情况和逻辑处理,正常开发后,当天白天正常,然后晚上高峰期开始玩家频繁反馈无法登录~~~ 处理逻辑: 优先确 ...
- openfoam 智能指针探索
前言 今天看到一个程序,用到了智能指针, virtual tmp<volScalarField> rho() const; 借此机会把有关智能指针的知识体系重新梳理一遍 智能指针autoP ...