ES入门教程

1. 创建ES对象


from elasticsearch import Elasticsearch
# 实例化一个ip为localhost,端口为9200,允许超时一小时的es对象
es = Elasticsearch(hosts="localhost",port=9200,timeout=3600)
# 1. 创建 索引
index_name = "test"
es.indices.create(index=index_name)# 2. 删除 索引
es.indices.delete(index='123')# 3. 插入数据
doc = {"name": "方天", "age": "23"}
es.index(index=index_name, id=2, document=doc)# 4. 删除数据
## 4.1 es.delete  删除指定 id 数据
es.delete(index='test',id='2')# 5. 更新数据
##  5.1 es.update():更新指定字段
doc = {'name': '李邱俊','age': '20'}
es.update(index='test',id='2',doc=doc)

2. 数据查询(最重要)

1. es.search():按照指定规则查询
res = es.search(index='test', query={'match_all': {}})
print(res)

参数说明:

参数说明
index要查询的索引名称
size查询多少条数据(默认10)
from_从第几条开始查询(用于分页)
filter_path过滤返回字段,只显示指定内容
query查询规则
sort排序方式

2. 常见查询方式

✅ 2.1 查询所有数据:match_all

res = es.search(index='test', query={'match_all': {}})

✅ 2.2 模糊查询(分词):match

res = es.search(index='test', query={'match': {'name': '方'}})

✅ 2.3 短语匹配(不分词):match_phrase

res = es.search(index='test', query={'match_phrase': {'name': '方天'}})

✅ 2.4 精确查询单值:term

res = es.search(index='test', query={'term': {'name.keyword': '方天'}})

注意:如果字段是 text 类型,需要用 .keyword 进行精确匹配。


✅ 2.5 精确查询多值:terms

res = es.search(index='test', query={'terms': {'name.keyword': ['方天', '李邱俊']}})

✅ 2.6 多字段查询:multi_match

res = es.search(index='test',query={'multi_match': {'query': '方天','fields': ['name', 'age']}}
)

✅ 2.7 前缀查询:prefix

res = es.search(index='test', query={'prefix': {'name.keyword': '方'}})

✅ 2.8 通配符查询:wildcard

res = es.search(index='test', query={'wildcard': {'name.keyword': '方?天'}})
? 表示一个字符,* 表示0个或多个字符

✅ 2.9 正则查询:regexp

res = es.search(index='test', query={'regexp': {'name.keyword': '方.*'}})

✅ 2.10 多条件查询:bool

must:与(AND)

res = es.search(index='test', query={'bool': {'must': [{'match': {'name': '方天'}},{'term': {'age': '23'}}]}
})

should:或(OR)

res = es.search(index='test', query={'bool': {'should': [{'match': {'name': '方天'}},{'match': {'name': '李邱俊'}}]}
})

must_not:非(NOT)

res = es.search(index='test', query={'bool': {'must_not': [{'term': {'name.keyword': '方天'}}]}
})

✅ 2.11 存在字段查询:exists

res = es.search(index='test', query={'exists': {'field': 'age'}})

✅ 2.12 范围查询:range

res = es.search(index='test', query={'range': {'age': {'gte': 20,'lte': 30 }}
})

✅ 2.13 嵌套查询:nested

假设数据结构为:

{"name": "方天","info": {"hobby": "篮球","city": "北京"}
}

查询嵌套字段:

res = es.search(index='test', query={'nested': {'path': 'info','query': {'match': {'info.hobby': '篮球'}}}
})

3. 排序:sort

升序(asc)

res = es.search(index='test', sort={'age': {'order': 'asc'}})

降序(desc)

res = es.search(index='test', sort={'age': {'order': 'desc'}})

4. 分页查询:sizefrom_
res = es.search(index='test', size=5, from_=0)

5. 过滤返回字段:filter_path
res = es.search(index='test',filter_path=['hits.hits._source.name']
)

6. 完整示例
# 查询 name 包含“方”且 age 在 20 到 30 之间,按 age 升序排列,只返回前 5 条
res = es.search(index='test',query={'bool': {'must': [{'match': {'name': '方'}}],'filter': [{'range': {'age': {'gte': 20, 'lte': 30}}}]}},sort={'age': {'order': 'asc'}},size=5
)# 打印结果
for hit in res['hits']['hits']:print(hit['_source'])

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/96256.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/96256.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/96256.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Gateway中Forward配置+源码观赏

系列文章目录 文章目录系列文章目录一、ForwardPathFilter二、RouteToRequestUrlFilter三、ForwardRoutingFilteryaml forward配置gateway:routes:- id: user-route # uri: lb://useruri: forward:///user/indexpredicates:- Path/user/**- YoGET # filt…

BAS16XV2T1G ON安森美半导体 高速开关二极管 电子元器件IC

BAS16XV2T1G ON Semiconductor 高速开关二极管专业解析1. 产品技术档案BAS16XV2T1G是安森美半导体(ON Semiconductor)推出的高速开关二极管,采用SOT-523超微型封装(1.60.80.95mm),专为现代高密度电子设备设计,以其超快…

亲测可用 [安卓]《神秘来电》V1.1无需登入无广告离线打开即用手机模拟发起虚假来电免费版

神秘来电是一款可以模拟虚拟电话的应用程序,它能够在用户需要的时候模拟各种来电,以便用户能够在尴尬的场合脱身。用户可以预设多个不同的来电号码和铃声,并可随时触发这些虚拟电话,在特殊情况下帮助用户摆脱尴尬。它为那些社交恐…

8.20 dp

lc73矩阵置零queue队列标记// 整行置零for(int y0; y<n; y) matrix[i][y] 0; // 整列置零for(int x0; x<m; x) matrix[x][j] 0; class Solution { public:void setZeroes(vector<vector<int>>& matrix) {int m matrix.size(), n matrix[0].size();//…

STL库——string(类模拟实现)

ʕ • ᴥ • ʔ づ♡ど &#x1f389; 欢迎点赞支持&#x1f389; 个人主页&#xff1a;励志不掉头发的内向程序员&#xff1b; 专栏主页&#xff1a;C语言&#xff1b; 文章目录 前言 一、基本框架 二、构造函数 三、析构函数 四、拷贝构造 五、运算符重载 5.1、赋值重载 5.2…

Linux I/O 多路复用实战:深入剖析 Select 与 Poll

## 引言:从“阻塞”的餐厅到“事件驱动”的盛宴 想象一下,你是一家小餐馆的服务员。餐厅只有5张桌子。你的工作流程是这样的:走到1号桌,问他们是否要点菜,然后站在那里等他们决定;等他们点完,再去2号桌,同样站在那里等... 如果1号桌的客人看菜单看了半个小时,那么其他…

【clion】cmake脚本1:调试脚本并构建Fargo项目win32版本

调试脚本并构建 【clion】visual studio的sln转cmakelist并使用clion构建32位 报错 "D:\Program Files\JetBrains\CLion 2022.3.1\bin\cmake\win\x64\bin\cmake.exe" --debugger --debugger-pipe=\\<

VS2005里的快捷键

VS2005是微软在2005发布的一款支持C、C#、.net开发语言的集成开发工具&#xff0c;它支持的C版本为C03&#xff0c;但不支持C11&#xff0c;到VS2013才支持大部分的C11(简称C11)&#xff0c;到VS2015 update3才完全支持C11。既然VS2005不支持C11&#xff0c;而智能指针是C11才引…

前后端联合实现文件下载,实现 SQL Server image 类型文件下载

1、前端 Vue3QualityFile.vue<script setup lang"ts" name"QualityFile"> ...... // 下载&#xff0c;实现 SQL Server image 类型文件下载 const onDownloadClick async (fileNo: string) > {// const result await qualityFileDownloadFileWi…

【OneAI】使用Rust构建的轻量AI网关

LLM网关 统一大模型API入口&#xff0c;使用一个令牌调用多家模型&#xff0c;无需切换API Key兼容OpenAI输入输出规范内置10提供商和50模型&#xff0c;开箱即用支持自动负载、限流、IP限制、Token用量限制等功能支持钉钉、飞书、企微消息预警支持对不同提供商设置代理支持主…

Jenkins服务器配置SSH

1. 创建Jenkins用户的SSH配置ssh-keygen -t rsa -b 4096 -f /tmp/jenkins_ssh_key -N ""2. 在Jenkins服务器上执行以下命令# 切换到root用户 sudo su -# 创建Jenkins用户的SSH目录 mkdir -p /var/lib/jenkins/.ssh chown jenkins:jenkins /var/lib/jenkins/.ssh chmo…

nginx-下载功能-状态统计-访问控制

nginx-下载功能-状态统计-访问控制一、利用nginx做网站提供下载功能1. 进入nginx存放配置文件目录2. 编辑nginx.conf文件&#xff0c;开启下载功能3. 检查nginx.conf主配置文件是否正确4. 重启nginx服务5. 修改首页文件index.html6. 访问首页7. 去网页根目录下新建download目录…

GitLab CI/CD、Jenkins与GitHub Actions在Kubernetes环境中的方案对比分析

GitLab CI/CD、Jenkins与GitHub Actions在Kubernetes环境中的方案对比分析 随着容器化和微服务的普及&#xff0c;基于Kubernetes的部署已经成为主流。在实际的生产环境中&#xff0c;如何选择合适的CI/CD流水线方案以实现自动化构建、测试、部署和发布&#xff0c;直接关系到团…

tcp会无限次重传吗

tcp作为面向连接的&#xff0c;可靠的&#xff0c;字节流。最重要的特点就是可靠&#xff0c;其中重传又是保证可靠的重要前提。那么当tcp发送数据之后&#xff0c;收不到ack的情况下&#xff0c;会无限次重传吗。不会。# cat /proc/sys/net/ipv4/tcp_retries1 3 # cat /proc/s…

EasyAIoT平台部署

EasyAIoT官方文档专注于 AIoT 智能硬件与工业软件解决方案&#xff0c;提供从设备接入到云端管理的全栈服务http://pro.basiclab.top:9988/

功能测试相关问题

1.功能测试流程&#xff08;工作流程&#xff09;需求分析 -- 测试点分析&#xff08;xmind&#xff09;-- 编写测试计划/用例及评审 -- 执行测试用例&#xff08;开发提交测试&#xff09;-- 发现缺陷通过缺陷管理工具提交 -- 回归测试及bug验证&#xff08;开发提测新版本&am…

微服务网关中数据权限传递的那些坑:从 Feign 兼容性问题到解决方案

在微服务架构中&#xff0c;网关作为流量入口&#xff0c;常常需要承担身份认证、权限校验等职责。其中&#xff0c;用户数据权限的传递看似简单&#xff0c;却隐藏着不少兼容性陷阱。本文将结合实际项目经验&#xff0c;聊聊如何解决 Feign 调用时请求头中 JSON 数据的传递问题…

基于SpringBoot的旅游攻略系统网站【2026最新】

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…

thingsboard 服务器在2核CPU、2G内存资源配置下如何调优提速,适合开发/演示

物联网设备管理平台致力于为客户提供高效、可靠的物联网解决方案。基于开源物联网平台进行深度二次开发&#xff0c;我们打造了功能强大、灵活易用的物联网平台&#xff0c;广泛应用于智能家居、智能工厂、智能城市等多个领域 一、标准资源要求 CPU&#xff1a;建议至少 8 vCP…

C#多线程学习—主子线程,Invoke与begininvoke

一、为什么需要多线程操作&#xff1f;在 WinForms 应用程序中&#xff0c;主线程&#xff08;UI 线程&#xff09;负责处理用户交互和界面更新。当执行耗时操作&#xff08;如网络请求、文件读写、复杂计算&#xff09;时&#xff0c;如果直接在 UI 线程执行&#xff0c;会导致…