Python elasticsearch 报错及解决方法

1. ERROR: [1] bootstrap checks failed [1]: the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, # discovery.seed_providers, cluster.initial_master_nodes] must be configured

  • 意思应该是:需要设置能够被选择为主节点的节点
  • 在config/elasticsearch.yml中加入: cluster.initial_master_nodes: ["node-1"]

2. ES 分片失败:UNASSIGNED reason为node_left

  • 背景: ES集群中一个节点突然因为运行内存占用大的程序而卡死,导致节点突然脱离集群,在elasticsearch-head中点击灰色分片显示node_lefe
  • 原因: NODE_LEFT :由于承载该分片的节点离开集群导致未分配。

    参考文章: https://www.cnblogs.com/whl-jx911/p/14482749.html
  • 解决办法:创建索引时设置副本数量至少为1,这样即使有一个节点断开,集群也能通过放在其他节点上的副本对分片进行恢复

3.document(s) failed to index... elasticsearch index missing

  • 背景:使用elasticsearch的helpers.bulk方法对数据进行批量写入时,出现运行到bulk位置报:缺失对应的索引数据错误
  • 原因:
    • bulk需要将格式为data = {"_index": "index_name", "_type": "type", "_source": dict}的字典放入一个数组里再批量写入
    • 而个人在action数组拼接时错误将action.append(data)写成了action.append(line),也就是拼接错了字典,导致数据对不上

4.Document contains at least one immense term in field="" (whose UTF8 encoding is longer than the max length 32766)

  • 翻译过来就是:有一个数据中的某个字段的值太长了,超过了规定的32766限制,field=""会显示是哪个字段的数据过长
  • 解决:缩短某个字段的数据长度,或者干脆舍弃掉这部分数据,例如正常为几千的长度突然出现几十万的长度,很可能是乱码的数据
posted @ 2023-02-28 17:57  默叶  阅读(812)  评论(0编辑  收藏  举报