跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Python

Python 连接和操作 Elasticsearch 详细指南

综述由AI生成如何使用 Python 连接和操作 Elasticsearch。内容包括服务器端配置(修改配置文件、开放端口)、本地 Python 客户端安装与连接、索引与文档的增删改查、搜索查询(简单、复杂、分页)、聚合查询及批量操作。同时提供了注意事项和故障排除方法,帮助开发者快速搭建基于 Elasticsearch 的数据检索系统。

协议工匠发布于 2026/3/30更新于 2026/5/2236 浏览
Python 连接和操作 Elasticsearch 详细指南

一、服务器端配置

在开始之前,确保你的 Elasticsearch 服务已经在服务器上正确安装和配置。

以下是一些基本的配置步骤:

1. 修改 Elasticsearch 配置文件

找到 Elasticsearch 的配置文件 elasticsearch.yml,并进行如下修改,以允许远程访问:

network.host: 0.0.0.0
http.port: 9200
discovery.type: single-node

2. 开放防火墙端口

确保服务器的防火墙已经开放了 Elasticsearch 的默认端口 9200。如果你使用的是云服务器,也需要在安全组中开放该端口。

你可以通过在浏览器中输入 http://<你的服务器 IP>:9200 来测试是否能够正常访问 Elasticsearch。如果配置正确,你应该能看到 Elasticsearch 的欢迎页面。

二、本地 Python 连接 Elasticsearch

在确保服务器端配置无误后,接下来我们在本地使用 Python 连接到 Elasticsearch。首先,你需要安装 elasticsearch Python 客户端库:

pip install elasticsearch

1. 连接 Elasticsearch

以下是连接到 Elasticsearch 的示例代码:

from elasticsearch import Elasticsearch
import json

# 连接到 Elasticsearch,替换为实际的 IP 地址和密码
es = Elasticsearch('http://192.168.111.199:9200', basic_auth=('elastic','Elastic_j625sz'))

# 检查连接
if es.ping():
    print('连接成功')
else:
    print('连接失败')

在上述代码中,basic_auth 参数用于传递用户名和密码。如果你的 Elasticsearch 没有设置密码,可以省略该参数。

2. 索引操作

# 创建索引
es.indices.create(index="my_index")

# 删除索引
es.indices.delete(index="my_index")

# 检查索引是否存在
es.indices.exists(index="my_index")

3. 文档操作

连接成功后,我们可以开始进行数据存储和搜索操作。以下是一个创建索引并插入数据的示例:

# 添加文档
doc1 = {"title":"测试文档 1","content":"这是一个测试文档 1","timestamp":"2024-12-07"}
doc2 = {"title":"测试文档 2","content":"这是一个测试文档 2","timestamp":"2024-12-01"}

# 指定 ID 插入
es.index(index="my_index",id="1", document=doc1)

# 自动生成 ID 插入
es.index(index="my_index", document=doc2)

# 获取文档
result = es.get(index="my_index",id="1")
print(result)

# 更新文档
update_doc = {"doc":{"title":"更新后的标题"}}
es.update(index="my_index",id="1", body=update_doc)
print(es.get(index="my_index",id="1"))

# 删除文档
es.delete(index="my_index",id="1")

4. 搜索内容

接下来,我们可以通过搜索来查找我们存储的数据。

在这之前,定义一个打印文档的方法:

def print_doc(result):
    for hit in result['hits']['hits']:
        print(f"文档 ID: {hit['_id']}")
        print(f"得分:{hit['_score']}")
        print(f"文档内容:{json.dumps(hit['_source'], indent=2, ensure_ascii=False)}")
        print("-" * 50)

下面是常用的搜索方式:

# 简单搜索
query = {"query":{"match":{"title":"测试"}}}
result = es.search(index="my_index", body=query)
print_doc(result)

# 复杂搜索(bool 查询)
query = {"query":{"bool":{"must":[{"match":{"title":"测试"}},{"range":{"timestamp":{"gte":"2024-01-01"}}}]}}}
result = es.search(index="my_index", body=query)
print_doc(result)

# 分页查询
query = {"query":{"match_all":{}},"from":0,# 从第几条开始
"size":10# 返回多少条}
result = es.search(index="my_index", body=query)
print_doc(result)

在这个示例中,我们搜索了包含'测试'这个词的文档,并打印出搜索结果。

5. 聚合查询

# 聚合查询示例
query = {"aggs":{"popular_titles":{"terms":{"field":"title.keyword","size":10}}}}
result = es.search(index="my_index", body=query)

6. 批量操作

# 批量插入
actions = [{"_index":"my_index","_source":{"title":"文档 1"}},{"_index":"my_index","_source":{"title":"文档 2"}},]
from elasticsearch.helpers import bulk
bulk(es, actions)

三、注意事项

在使用 Elasticsearch 时,有几个注意事项需要牢记:

  1. 确保 Elasticsearch 服务正在运行:在进行任何操作之前,确保 Elasticsearch 服务已经启动。
  2. 检查网络连接:确保本地机器与服务器之间的网络连接畅通。
  3. 认证信息:如果 Elasticsearch 配置了认证,连接时必须提供正确的用户名和密码。
  4. 安全措施:在生产环境中,建议配置合适的安全措施,例如使用 HTTPS 和防火墙规则。
  5. 记得在完成操作后关闭连接:es.close()

四、故障排除

如果在连接或操作 Elasticsearch 时遇到问题,可以尝试以下方法进行排查:

  • 检查 Elasticsearch 的日志文件,查看是否有错误信息。
  • 确认 elasticsearch.yml 配置文件中的设置是否正确,并重启 Elasticsearch 服务以应用更改。

使用 telnet 测试端口连通性:

telnet <你的服务器 IP> 9200

结论

通过以上步骤,你应该能够成功使用 Python 连接到 Elasticsearch,并进行基本的文档存储和搜索操作。Elasticsearch 提供了强大的搜索能力,结合 Python 的灵活性,可以帮助你构建高效的数据检索系统。

目录

  1. 一、服务器端配置
  2. 1. 修改 Elasticsearch 配置文件
  3. 2. 开放防火墙端口
  4. 二、本地 Python 连接 Elasticsearch
  5. 1. 连接 Elasticsearch
  6. 连接到 Elasticsearch,替换为实际的 IP 地址和密码
  7. 检查连接
  8. 2. 索引操作
  9. 创建索引
  10. 删除索引
  11. 检查索引是否存在
  12. 3. 文档操作
  13. 添加文档
  14. 指定 ID 插入
  15. 自动生成 ID 插入
  16. 获取文档
  17. 更新文档
  18. 删除文档
  19. 4. 搜索内容
  20. 简单搜索
  21. 复杂搜索(bool 查询)
  22. 分页查询
  23. 5. 聚合查询
  24. 聚合查询示例
  25. 6. 批量操作
  26. 批量插入
  27. 三、注意事项
  28. 四、故障排除
  29. 结论
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • MATLAB 与 Python 混合编程实战指南
  • Rust 异步编程高级模式:并发控制、超时机制与实战架构
  • Python Flask 旅游景点酒店推荐系统设计与实现
  • Java Stream 的基本概念与三段式结构
  • 前端响应式布局核心方案与实战技巧
  • Java 中 == 与 equals() 的区别
  • Mixtral 8X7B Instruct v0.1 llamafile 部署与应用实战指南
  • Elasticsearch 与 Kibana 实战:安装部署及 C++ 客户端封装
  • Python 音乐推荐系统:Django+Echarts+协同过滤算法
  • C++ 20 协程入门指南
  • Python 核心语法详解:变量、流程控制与函数基础
  • Java 默认花括号对齐方式修改教程
  • Open-WebUI 本地部署指南:打造私有化 AI 对话界面
  • 使用 CopilotKit 快速为前端集成 AI 助手实战指南
  • OpenClaw 低代码 AI 平台:企业数字化落地的技术路径
  • Llama Factory GPU 利用率低:算力优化实战部署案例
  • OpenCV 4 Python 实战:计算摄影与机器学习应用
  • Nginx 核心原理与配置面试题详解
  • Android 陀螺仪开发实战:从传感器数据到角度积分
  • Whisper-large-v3 部署避坑指南:解决启动、性能与识别率问题

相关免费在线工具

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online