连接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. 白鲸开源 DataOps 平台加速数据分析和大模型构建

    作者 | 李晨 编辑 | Debra Chen 数据准备对于推动有效的自助式分析和数据科学实践至关重要.如今,企业大都知道基于数据的决策是成功数字化转型的关键,但要做出有效的决策,只有可信的数据才能提 ...

  2. 【CMake系列】09-cmake install 一般文件 文件夹 代码文件

    上一节,我们学习了项目构建后.目标的安装,本节学习的内容是 对于一般文件,文件夹以及源代码的安装 本节的文件依然使用 file(WRITE xxx.xx) 来创建,不依赖额外的文件 本专栏的实践代码全 ...

  3. .NETCore 服务的三种生命周期

    一.接口定义 public interface ITestSerivceSingleton { public string GetServiceNameBase() { return "IT ...

  4. armbian挂载sd卡记录

    mkdir -p /mnt/mmctouch  /etc/init.d/mount.shvim /etc/init.d/mount.sh内容见图mount /dev/mmcblk1p1 /mnt/mm ...

  5. 最简!手把手带你完美删除Vmware虚拟机!

    Vmware虚拟机最简完美删除教程 你还在苦于无法完美删除Vmware虚拟机吗?你还在为自己千疮百孔的系统而烦恼吗?你还在为想要重做Vmware但没删干净各种报错而烦操吗?但今天之后这些问题都将不是问 ...

  6. Kubernetes-19:Prometheus-operator集群监控神器

    Prometheus-operator集群监控 github地址:https://github.com/prometheus-operator/kube-prometheus 具体的Prometheu ...

  7. 阿里云【七天深入MySQL实战营】

    阿里云[七天深入MySQL实战营] 最近报名了阿里云[七天深入MySQL实战营].不过一直没时间看[最主要还是自己懒],看了下课程及答疑信息,感觉应该还可以,分享出来和大家一起学习学习​.现在课程已经 ...

  8. 深入理解JavaScript中的箭头函数

    箭头函数可以使我们的代码更加简洁,如下: var sum = (a,b) => a+b; JavaScript 充满了我们需要编写在其他地方执行的小函数的情况. 例如: arr.forEach( ...

  9. 在 Web 中判断页面是不是刷新

    在 Web 开发中,我们经常需要区分用户是否通过刷新操作重新加载了页面.这一操作可能是由用户手动刷新(如按下 F5 键或点击浏览器刷新按钮)或通过浏览器自动重新加载.判断页面是否刷新有助于开发者优化用 ...

  10. 痛定思痛,好好做人,从头过一遍PyTorch框架(一)(1.深度学习简介、2.预备知识)

    现在是2024年2月24日,13:59,从研一就开始断断续续说要过一遍框架,到现在博一下学期,还一直拖着呢,拖延症太可怕啦,决定好好做人,不拖了,就从现在开始,好好过一遍,呜呜呜呜呜呜呜呜,(罪该万死 ...