鱼C论坛

 找回密码
 立即注册
查看: 10995|回复: 24

[已解决]python中elasticsearch连接创建索引问题

[复制链接]
发表于 2023-6-29 08:51:52 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. from elasticsearch import Elasticsearch

  2. es = Elasticsearch("http://127.0.0.1:9200/")
  3. result = es.indices.create(index='news',ignore=400)
  4. print(result)
复制代码


然后就报错了:
DeprecationWarning: Passing transport options in the API method is deprecated. Use 'Elasticsearch.options()' instead.
  result = es.indices.create(index='news',ignore=400)

如果需要设置账号和密码的话,该怎么填写Elasticsearch("http://127.0.0.1:9200/")括号里面的内容呢?我安装elasticsearch的时候没有设置账号和密码。
最佳答案
2023-6-29 15:36:16
因为你设置了主节点,但是你的配置文件少了一个设置节点名,所以他找不到主节点

配置文件改动:
  1. node.name: node-1
  2. cluster.initial_master_nodes: ["node-1"]
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-6-29 15:36:16 | 显示全部楼层    本楼为最佳答案   
因为你设置了主节点,但是你的配置文件少了一个设置节点名,所以他找不到主节点

配置文件改动:
  1. node.name: node-1
  2. cluster.initial_master_nodes: ["node-1"]
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-29 11:51:52 | 显示全部楼层

嗯嗯,需要帮助的话加我微信:isdkz_
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-6-29 11:49:08 | 显示全部楼层
isdkz 发表于 2023-6-29 11:35
那就奇怪了,如果方便的话可以给你远程看一下

下午吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-29 11:35:32 | 显示全部楼层

那就奇怪了,如果方便的话可以给你远程看一下
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-6-29 11:32:58 | 显示全部楼层
isdkz 发表于 2023-6-29 10:46
我这里没有啥问题呀


                               
登录/注册后可看大图

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-29 10:46:50 | 显示全部楼层
python小小白哟 发表于 2023-6-29 10:18
ES的版本是 elasticsearch-7.17.3
elasticsearch库的版本用pip list 查看后是 :   elasticsearch     8.8. ...

我这里没有啥问题呀

Snipaste_2023-06-29_10-45-46.png

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-6-29 10:18:07 | 显示全部楼层
ES的版本是 elasticsearch-7.17.3
elasticsearch库的版本用pip list 查看后是 :   elasticsearch     8.8.0
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-29 10:14:41 | 显示全部楼层
python小小白哟 发表于 2023-6-29 10:11
没有  ES服务在物理机上装着  pycharn也在物理机

那奇怪了,你的 ES是刚安装的是吧,你的ES版本和python的elasticsearch库的版本是多少,我去试一下
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-6-29 10:11:35 | 显示全部楼层
isdkz 发表于 2023-6-29 10:10
你的es有没有在虚拟机上跑,然后你是在物理上运行python代码?

没有  ES服务在物理机上装着  pycharn也在物理机
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-29 10:10:01 | 显示全部楼层

你的es有没有在虚拟机上跑,然后你是在物理上运行python代码?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-6-29 10:07:59 | 显示全部楼层
isdkz 发表于 2023-6-29 10:05
是不是你运行这个python代码的地方不是es所在的主机?

我就一台电脑   
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-29 10:05:49 | 显示全部楼层
python小小白哟 发表于 2023-6-29 10:03
输入别的索引名称还是不行的。

是不是你运行这个python代码的地方不是es所在的主机?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-6-29 10:03:35 | 显示全部楼层
isdkz 发表于 2023-6-29 10:02
那你确定你要创建的索引是不存在的吗?

输入别的索引名称还是不行的。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-29 10:02:01 | 显示全部楼层
python小小白哟 发表于 2023-6-29 10:00
我的系统是WIN10专业版,网络是一直正常的。

那你确定你要创建的索引是不存在的吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-6-29 10:00:25 | 显示全部楼层
isdkz 发表于 2023-6-29 09:49
这可能意味着你的Python程序可以成功连接到Elasticsearch服务,但在尝试创建索引时发生了超时。这可能是 ...

我的系统是WIN10专业版,网络是一直正常的。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-29 09:49:04 | 显示全部楼层

这可能意味着你的Python程序可以成功连接到Elasticsearch服务,但在尝试创建索引时发生了超时。这可能是由于以下原因:

1. Elasticsearch的性能问题:如果Elasticsearch在处理大量请求或者运行大型操作,它可能会变得很慢,甚至超时。在这种情况下,你可能需要查看Elasticsearch的监控数据,看看是否有任何明显的性能问题。

2. 网络延迟或不稳定:虽然你的Python程序可以连接到Elasticsearch,但如果网络延迟高或者连接不稳定,可能会导致超时。你可以尝试从不同的网络环境或不同的机器上运行你的Python程序,看看问题是否依然存在。

3. 创建的索引已经存在:如果你尝试创建的索引已经存在,那么 es.indices.create(index='news') 可能会超时。你可以使用 es.indices.exists(index='news') 来检查索引是否已经存在。如果已经存在,你需要先删除它,然后再尝试创建。

4. 调整客户端的超时设置:Elasticsearch Python客户端默认的超时时间可能比较短,如果服务器响应慢,可能就会引发超时错误。你可以在初始化Elasticsearch对象时,设置更大的超时时间,例如 es = Elasticsearch(['http://localhost:9200'], timeout=30) 。这样设置后,客户端会等待更长的时间来获取服务器的响应。

希望这些建议能帮助你解决问题。如果问题仍然存在,你可能需要提供更多的错误信息,以便我们能更好地帮助你。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-6-29 09:47:42 | 显示全部楼层
isdkz 发表于 2023-6-29 09:43
如果你的  curl http://localhost:9200  命令返回了Elasticsearch的服务信息,这说明你的Elasticsearch服 ...

这两行代码:
  1. from elasticsearch import Elasticsearch
  2. es = Elasticsearch(['http://localhost:9200'])
复制代码


倒没有报错,但是加了以下两行代码就显示超时:
  1. result = es.indices.create(index='news')
  2. print(result)
复制代码



小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-29 09:43:58 | 显示全部楼层
python小小白哟 发表于 2023-6-29 09:41
运行 curl http://localhost:9200

返回的是ES服务的信息。

如果你的  curl http://localhost:9200  命令返回了Elasticsearch的服务信息,这说明你的Elasticsearch服务确实正在运行,且可以在默认的9200端口上被访问。

这就意味着你的Python Elasticsearch客户端应该也能够连接到这个服务。如果你的Python代码仍然无法连接到Elasticsearch,那可能是由于其他问题引起的。例如,防火墙设置,网络问题,或者Python环境的问题。

这是连接Elasticsearch的基础代码:

  1. from elasticsearch import Elasticsearch

  2. es = Elasticsearch(['http://localhost:9200'])
复制代码


如果你确定Elasticsearch服务在运行,并且没有任何身份验证,那么这段代码应该能够工作。如果它还是不能工作,你可能需要更详细地检查你的Python环境或网络环境。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-6-29 09:41:37 | 显示全部楼层
isdkz 发表于 2023-6-29 09:37
如果你收到一个 "ConnectionTimeout" 错误,这通常意味着你的Python程序无法成功地连接到你的Elasticsear ...

运行 curl http://localhost:9200

返回的是ES服务的信息。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-10-23 03:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表