cv::imread导致段错误_Elasticsearch 常见的 8 种错误及最佳实践

题记

Elasticsearch 社区有大量关于 Elasticsearch 错误和异常的问题。

深挖这些错误背后的原因,把常见的错误积累为自己的实战经验甚至是工具,不仅可以节省我们的开发和运维时间,而且可以帮助确保 Elasticsearch 集群的长期健康运行。

常见的异常、原因和常规最佳实践拆解如下,这些最佳实践可以帮助我们更有效地识别、最小化定位和处理异常问题。

1、 Mapper_parsing_exception

Elasticsearch 依靠映射(Mapping)定义的数据类型处理数据。

映射定义了文档中的字段并指定了它们对应的数据类型,例如日期类型 Date、长整数类型 long 和  字符串类型 text。

如果索引文档包含没有定义数据类型的新字段,Elasticsearch将使用动态映射来估计字段的类型,并在必要时将其从一种类型转换为另一种类型。

如果Elasticsearch无法执行此转换,它将引发“ mapper_parsing_exception无法解析” 异常。

如果此类异常太多会降低索引吞吐量。

实战举例如下:

DELETE mytest_0001
PUT mytest_0001/_doc/1
{
  "name":"John"
}

PUT mytest_0001/_doc/2
{
  "name": {
    "firstname": "John",
    "lastname": "doe"
  }
}

为避免此问题,可以在创建索引时显示定义Mapping,明确敲定字段类型。或者可以使用 _mapping 动态添加新字段映射。

动态更新索引实战:

PUT mytest_0001/_mapping
{
  "properties": {
    "title": {
      "type": "text"
    }
  }
}

请注意:虽然可以通过如上命令动态添加字段,但是不能更改现有字段映射。

若想做字段类型的修改,需要重新定义Mapping 结合 reindex 和 alias 别名 实现。

2、BulkIndexError

批量索引大型数据集通常更有效。

例如,您可以执行一个批量操作来索引 1,000 个文档,而不是使用 1,000 个索引操作。

批量操作可以通过 bulk API 完成。

批量操作实战:

PUT my_index_0003/_bulk
{ "index":{ "_id":1}}
{ "myid":"c12345"}
{ "index":{ "_id":2}}
{ "myid":"C12456"}
{ "index":{ "_id":3}}
{ "myid":"C31268"}

但是,此过程容易出错。执行批量操作的过程中,你需要仔细检查:数据类型不匹配和空值匹配等问题。

对于批量 API ,你需要格外警惕,因为即使有数百个肯定的响应,批量中的某些索引请求也可能失败。

批量操作捕获错误实战:

 &#
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值