连接Elasticsearch(ES)服务器是进行数据搜索和分析的常用操作。Elasticsearch是一个基于Lucene的搜索引擎,提供了RESTful API来进行索引、搜索和管理数据。

以下是一个详细的Python代码示例,展示如何连接到Elasticsearch服务器并执行一些基本操作。这个示例使用了官方的elasticsearch-py客户端库。

1. 安装Elasticsearch客户端库

首先,你需要安装elasticsearch库。如果你还没有安装,可以使用pip进行安装:

bash复制代码

pip install elasticsearch

2. 连接到Elasticsearch服务器

以下是一个完整的Python脚本,展示了如何连接到Elasticsearch服务器,创建索引,添加文档,并进行搜索。

from elasticsearch import Elasticsearch, helpers  

# 配置Elasticsearch连接
es = Elasticsearch(
['http://localhost:9200'], # Elasticsearch服务器地址和端口
http_auth=('username', 'password'), # 如果需要认证,填写用户名和密码
use_ssl=False, # 如果使用HTTPS,设置为True
verify_certs=False # 如果使用HTTPS且自签名证书,设置为False
) # 检查连接是否成功
if es.ping():
print("Successfully connected to Elasticsearch!")
else:
print("Could not connect to Elasticsearch")
exit() # 创建索引
index_name = 'my_index'
if not es.indices.exists(index=index_name):
# 定义索引的映射(Schema)
mappings = {
'properties': {
'title': {'type': 'text'},
'content': {'type': 'text'},
'author': {'type': 'keyword'}
}
}
# 创建索引
es.indices.create(index=index_name, body={'mappings': mappings})
print(f"Index '{index_name}' created successfully.")
else:
print(f"Index '{index_name}' already exists.") # 添加文档
documents = [
{"_id": 1, "title": "Elasticsearch Basics", "content": "Learn the basics of Elasticsearch.", "author": "John Doe"},
{"_id": 2, "title": "Advanced Elasticsearch", "content": "Go deeper into Elasticsearch features.", "author": "Jane Smith"},
{"_id": 3, "title": "Elasticsearch Performance", "content": "Optimize Elasticsearch for performance.", "author": "Alice Johnson"}
] # 使用bulk API批量添加文档
actions = [
{
"_index": index_name,
"_id": doc['_id'],
"_source": doc
}
for doc in documents
] helpers.bulk(es, actions)
print("Documents added successfully.") # 搜索文档
search_body = {
"query": {
"match": {
"content": "Elasticsearch"
}
}
} response = es.search(index=index_name, body=search_body)
print("Search results:")
for hit in response['hits']['hits']:
print(hit['_source']) # 清理(可选):删除索引
# es.indices.delete(index=index_name)
# print(f"Index '{index_name}' deleted successfully.")

3.代码解释

  1. 连接配置:

    • Elasticsearch(['http://localhost:9200']):连接到运行在本地主机上的Elasticsearch服务器,默认端口为9200。
    • http_auth=('username', 'password'):如果Elasticsearch服务器需要认证,填写用户名和密码。
    • use_sslverify_certs:如果连接使用HTTPS,可以启用这些选项。
  2. 检查连接:
    • 使用es.ping()方法检查连接是否成功。
  3. 创建索引:
    • 使用es.indices.exists(index=index_name)检查索引是否存在。
    • 使用es.indices.create(index=index_name, body={'mappings': mappings})创建索引,并定义文档的映射。
  4. 添加文档:
    • 使用helpers.bulk(es, actions)批量添加文档到索引中。
  5. 搜索文档:
    • 使用es.search(index=index_name, body=search_body)进行搜索,并打印搜索结果。
  6. 清理(可选):
    • 使用es.indices.delete(index=index_name)删除索引。

4.注意事项

  • 服务器地址:确保Elasticsearch服务器正在运行,并且地址和端口配置正确。
  • 认证:如果Elasticsearch服务器需要认证,确保提供正确的用户名和密码。
  • SSL:如果连接使用HTTPS,请正确配置use_sslverify_certs选项。

python ES连接服务器的方法的更多相关文章

  1. python socket连接服务器获取回显

    军训回来了,皮皮..... import socket import sys try: s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) #创建一个 ...

  2. linux使用http代理连接服务器设置方法

    连接腾讯的额cvm服务器官方给出的也有个方法,详细可以看这里:http://wiki.open.qq.com/wiki/%E4%BB%8E%E6%9C%AC%E5%9C%B0linux%E6%9C%B ...

  3. 金蝶KIS客户端修改IP连接服务器的方法

    问题现象:服务器IP变更后,金蝶KIS客户端打开时提示多个错误,并会自动关闭,无法联网登录 1. 到下面位置修改注册表 Windows Registry Editor Version 5.00 [HK ...

  4. 使用Python代码远程连接服务器

    目录 一.paramiko模块的介绍 二.基本使用(用户名密码登录) 三.用公钥私钥连接 一.paramiko模块的介绍 模块介绍 使用Python的第三方模块paramiko实现远程连接服务器 功能 ...

  5. 使用paramiko如何连接服务器?

    本文和大家分享的是python开发中使用paramiko连接服务器的方法和步骤,希望通过本文的,对大家学习和使用paramiko有所帮助. ssh连接步骤 1.ssh server建立server p ...

  6. ASP.NET SignalR 与 LayIM2.0 配合轻松实现Web聊天室(二) 之 ChatServer搭建,连接服务器,以及注意事项。

    上篇:ASP.NET SignalR 与 LayIM2.0 配合轻松实现Web聊天室(一) 之 基层数据搭建,让数据活起来(数据获取) 上一篇我们已经完成了初步界面的搭建工作,本篇将介绍IM的核心内容 ...

  7. python搭建简易服务器实例参考

    有关python搭建简易服务器的方法. 需求分析: 省油宝用户数 已经破了6000,原有的静态报表 已经变得臃肿不堪, 每次打开都要缓上半天,甚至浏览器直接挂掉 采用python搭建一个最最简易的 w ...

  8. js进阶ajax的XMLHttpRequest对象的status和statustext属性(如果ajax和php联合使用的话:open连接服务器的第二个参数文件路径改成请求php的url即可)

    js进阶ajax的XMLHttpRequest对象的status和statustext属性(如果ajax和php联合使用的话:open连接服务器的第二个参数文件路径改成请求php的url即可) 一.总 ...

  9. js进阶ajax基本用法(创建对象,连接服务器,发送请求,获取服务器传过来的数据)

    js进阶ajax基本用法(创建对象,连接服务器,发送请求,获取服务器传过来的数据) 一.总结 1.ajax的浏览器的window对象的XMLHtmlRequest对象的两个重要方法:open(),se ...

  10. python中使用paramiko模块并实现远程连接服务器执行上传下载

    paramiko模块 paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接. 因此,如果需要使用SSH从一个平台连接到另外一个平台,进行一系 ...

随机推荐

  1. 【转载】ubuntu22.04安装gcc-8失败

    版权声明:本文为CSDN博主「Death_Note_」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明.原文链接:https://blog.csdn.net/Death ...

  2. 代码随想录Day5

    242.有效的字母异位词 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词. 注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词. 示例 ...

  3. 【简单菊花图】Codeforce 1583Problem - B.md

    1583Problem - B - Codeforces 题目大意:n个点的无根树 给出m个限制条件 (a,c,b)在a到b路径上不能存在c点,求任意一种可能的树的所有边 注意数据范围:1<m& ...

  4. SMU Summer 2024 Contest Round 5

    SMU Summer 2024 Contest Round 5 Robot Takahashi 思路 按照 \(W_i\) 排个序,算一下前缀后缀 1 和 0 的个数就行了.答案大概是一个 \(\ma ...

  5. 解决 Docker CE 在无根模式(rootless)下无法通过 IPv6 拉取映像的问题

    折腾一天快把我逼疯了 本来 Docker 对 IPv6 的支持就不好,再来个 rootless,雪上加霜 首先,我们要区分 Docker Engine 和 里面的 Image. 拉取映像是 Docke ...

  6. 基于surging的木舟IOT平台如何添加网络组件

    一 . 概述 为了弥补代码的遗失,木舟IOT平台正在加班加点进行研发,后面不只是针对于IOT设备接入上报,告警,视频管理,组态数据可视化大屏,后面还会有快速搭建微服务平台,利用surging.cli工 ...

  7. animate动画库的使用

    在vue中便捷使用animate动画库效果. 安装animate动画库 npm install animate.css --save 在vue跟目录中 main.js 导入animate动画库 imp ...

  8. Spark 知识

    Spark 学习 Spark(一): 基本架构及原理 https://www.cnblogs.com/xing901022/p/8260362.html https://www.cnblogs.com ...

  9. 动态规划——详解leetcode518 零钱兑换 II

    动态规划 零钱兑换 II 参考书目:<程序员代码面试指南:IT名企算法与数据结构题目最优解> 给定不同面额的硬币和一个总金额.写出函数来计算可以凑成总金额的硬币组合数.假设每一种面额的硬币 ...

  10. vue 实现组件全屏展示及退出

    vue 实现组件全屏展示及退出 一.组件 采用 vue-fullscreen 组件 二.实现方式 <fullscreen ref="fullscreen" @change=& ...