Elasticsearch 常见的 8 种错误及最佳实践

题记

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

深挖这些错误背后的缘由,把常见的错误积累为本身的实战经验甚至是工具,不只能够节省咱们的开发和运维时间,并且能够帮助确保 Elasticsearch 集群的长期健康运行。运维

常见的异常、缘由和常规最佳实践拆解以下,这些最佳实践能够帮助咱们更有效地识别、最小化定位和处理异常问题。工具

一、 Mapper_parsing_exception

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

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

若是索引文档包含没有定义数据类型的新字段,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 动态添加新字段映射。it

动态更新索引实战:

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

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

相关文章
相关标签/搜索