Elasticsearch 创建index库 timeout

问题概述

  1. 使用 python 客户端 代码进行创建,【之前成功创建,但是现在出现报错,报错代码es_connection.client.indices.create
def create_vector_index(dataset_index_name,vector_query_field,query_field):

    es_connection = get_collention(dataset_index_name,vector_query_field,query_field)
    
    es_connection.client.indices.create(
    index=dataset_index_name,
    mappings={
        "properties": {
            f"{query_field}": {
                "type": "text",
                "analyzer": "ik_max_word",
                "search_analyzer": "ik_smart",    
                 "fields": {
                        "raw": { 
                        "type":  "keyword"
                                }
                            }                      
                               },
            f"{vector_query_field}": {
                        "type": "dense_vector",
                        "dims": 1024,
                        "index": True,
                        "similarity": "cosine",
                    },
        }
    },
    )
  1. 重启 es01 docker 容器 ,同样出现 上述问题。
  2. 使用kibana 进行 调取 es库中数据可以正常使用,也可正常链接。 但是同样不能创建 index库。请求超时错误。
  1. 通过步骤3,断定es出了问题,查看docker日志 ,docker logs -f es01, 开始警告磁盘空间,【问题很可能出在 es 存储上限,导致库不能创建成功】

创建库失败时,打印的日志,排除网络问题导致的超时。

【解决方法】

kibana 客户端 设置es的磁盘上限

PUT _cluster/settings
{
  "transient": {
    "cluster.routing.allocation.disk.watermark.low": "95%",
    "cluster.routing.allocation.disk.watermark.high": "95%"
  }
}

返回结果:

{
  "acknowledged": true,
  "persistent": {},
  "transient": {
    "cluster": {
      "routing": {
        "allocation": {
          "disk": {
            "watermark": {
              "low": "95%",
              "high": "95%"
            }
          }
        }
      }
    }
  }
}

执行上面命令后,查看日志可以看到,存储下限进行调整,另外可以发现,在kibana 的 红色的ir_quest的库 自动变为黄色,可以正常使用。

  1. 进入es01 容器,查看gc.log, 发现另一个问题:【一直gc清理,但清理不出太多空间, 说明JVM 空间 当时启动docker 时设置太小。】

附加问题的解决方法是: 在启动docker的es01时的启动命令有问题:

【ps小工具】查看docker的启动参数工具, python环境, 执行: pip install runlike

runlike -p es01

原始命令:

(fastapi) (base) server@server:~/data3/chat_fastapi_project/information_retrieval$ runlike -p es01 
docker run --name=es01 \\
        --hostname=d989639e3cb4 \\
        --user=1000:0 \\
        --network=elastic \\
        --workdir=/usr/share/elasticsearch \\
        -p 9200:9200 \\
        --expose=9300 \\
        --restart=no \\
        --runtime=runc \\
        --memory="1073741824" \\
        -t \\
        docker.elastic.co/elasticsearch/elasticsearch:8.11.3 \\
        eswrapper

更新的参考命令:

sudo docker run --name elasticsearch \\
-p 9200:9200  -p 9300:9300 \\
--restart=always \\
--privileged=true \\
-it -v /etc/localtime:/etc/localtime:ro \\
-e "discovery.type=single-node" \\
-e ES_JAVA_OPTS="-Xms1024m -Xmx8192m" \\
-v /opt/elasticsearch/config:/usr/share/elasticsearch/config \\
-v /opt/elasticsearch/data:/usr/share/elasticsearch/data \\
-v /opt/elasticsearch/plugins:/usr/share/elasticsearch/plugins \\
-v /opt/elasticsearch/logs:/usr/share/elasticsearch/logs \\
-d elasticsearch:8.11.3 \\

【ps小技巧】后面在创建ES 容器时, 先创建一次, 将默认的生成的这些文件copy出来, 然后 删除 容器, 在重新启动,启动时将关键目录挂载到镜像中。

相关推荐
bubble小拾5 小时前
ElasticSearch高级功能详解与读写性能调优
大数据·elasticsearch·搜索引擎
不能放弃治疗6 小时前
重生之我们在ES顶端相遇第 18 章 - Script 使用(进阶)
elasticsearch
hengzhepa7 小时前
ElasticSearch备考 -- Search across cluster
学习·elasticsearch·搜索引擎·全文检索·es
Elastic 中国社区官方博客8 小时前
Elasticsearch:使用 LLM 实现传统搜索自动化
大数据·人工智能·elasticsearch·搜索引擎·ai·自动化·全文检索
慕雪华年9 小时前
【WSL】wsl中ubuntu无法通过useradd添加用户
linux·ubuntu·elasticsearch
Elastic 中国社区官方博客11 小时前
使用 Vertex AI Gemini 模型和 Elasticsearch Playground 快速创建 RAG 应用程序
大数据·人工智能·elasticsearch·搜索引擎·全文检索
alfiy12 小时前
Elasticsearch学习笔记(四) Elasticsearch集群安全配置一
笔记·学习·elasticsearch
alfiy13 小时前
Elasticsearch学习笔记(五)Elastic stack安全配置二
笔记·学习·elasticsearch
丶21361 天前
【大数据】Elasticsearch 实战应用总结
大数据·elasticsearch·搜索引擎
闲人编程1 天前
elasticsearch实战应用
大数据·python·elasticsearch·实战应用