当前位置:首页>python>保姆级教程!Python玩转Elasticsearch:从连接到增删改查完整实战

保姆级教程!Python玩转Elasticsearch:从连接到增删改查完整实战

  • 2026-10-09 19:50:32
保姆级教程!Python玩转Elasticsearch:从连接到增删改查完整实战

Elasticsearch是一个强大的搜索引擎,广泛应用于数据存储和搜索场景。通过 Python,我们可以方便地与Elasticsearch进行交互。本文将详细介绍如何在本地使用Python连接到服务器上的Elasticsearch,并进行基本的操作。

今日文章阅读福利:《运维入门大礼包》

扫码添加小助理,发送暗号“运维”,即可获取。

一、服务器端配置

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

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

1. 修改Elasticsearch配置文件

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

network.host: 0.0.0.0http.port: 9200discovery.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# 连接到 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时遇到问题,可以尝试以下方法进行排查:

  • 使用telnet测试端口连通性:

telnet <你的服务器IP> 9200
  • 检查Elasticsearch的日志文件,查看是否有错误信息。

  • 确认elasticsearch.yml配置文件中的设置是否正确,并重启 Elasticsearch服务以应用更改。

结论

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

 文章声明 
本文部分素材整理自网络公开领域,版权归原作者所有,由LINUX工程师训练营排版成文,转载请注明出处,侵删。
新盟教育自2009年成立,至今已有16年的IT培训经验。在长期的发展过程中,我们始终秉持“以学生发展为宗旨,以教学质量为生命,以团队精神为法宝,以服务态度为基础”的理念,踏踏实实地开展教学工作。
新盟教育是华为HALP授权培训机构,也是腾讯课堂101认证机构,还曾与思科官方、阿里云官方有过合作。这些合作与授权,代表着行业对我们的认可。
在课程设置上,我们以华为、思科课程为主,同时也开设了Linux、红帽、K8s微服务等课程。为了让学员能更好地适应企业工作,我们还提供企业实操的选修知识讲座。通过这些课程,我们希望帮助学员掌握扎实的IT技能。
成立至今,我们已经为18万多名学员提供了IT技术教育和指导,向Cisco、Google、联想、方正等上百家知名企业输送了很多IT人才,在合作伙伴和学员中都收获了不错的评价。
如果你有志于在IT领域发展,新盟教育愿意成为你成长路上的助力,帮你实现职业目标。

最新文章

随机文章