操作类型
系统支持通过参数(op_type=create)强制执行创建索引操作。只有当系统中不存在此文档的时候才会创建成功。如果不指定此操作类型,如果存在此文档则会进行更新操作。
bulk 默认op_type 是index
自动创建id
当创建文档的时候,如果不指定id,系统则会默认创建id。自动生成的id是一个不会重复的随机数。
分片选择
默认情况下,分片的选择是通过id的散列值进行控制。这个只可以通过router参数进行手动控制。可以在每个操作的基础上直接通过hash函数的值来指定分片的选择。如下:
POST example/docs/?routing=路由的值(动态替换)&pretty
报错信息
异常一:
ElasticsearchException[Elasticsearch exception [type=mapper_parsing_exception, reason=failed to parse field [extractedFields.message.time] of type [date] in document with id 'z06A4X0BHDCoR6byd8Hy'. Preview of field's value: '2020-07-23 11:23:38']]; nested: ElasticsearchException[Elasticsearch exception [type=illegal_argument_exception, reason=failed to parse date field [2020-07-23 11:23:38] with format [strict_date_optional_time||epoch_millis]]]; nested: ElasticsearchException[Elasticsearch exception [type=date_time_parse_exception, reason=Failed to parse with all enclosed parsers]];
异常二:
ElasticsearchException[Elasticsearch exception [type=mapper_parsing_exception, reason=failed to parse field [time] of type [date] in document with id 'OkmVZn4BExock2uC-Xxt'. Preview of field's value: '13:50:02']]; nested: ElasticsearchException[Elasticsearch exception [type=illegal_argument_exception, reason=failed to parse date field [13:50:02] with format [strict_date_optional_time||epoch_millis]]]; nested: ElasticsearchException[Elasticsearch exception [type=date_time_parse_exception, reason=Failed to parse with all enclosed parsers]];
异常三:
ElasticsearchException[Elasticsearch exception [type=mapper_parsing_exception, reason=failed to parse field [extractedFields.message] of type [text] in document with id '4VKG4X0BHDCoR6byZVqf'. Preview of field's value: '{protocol=http, app_ip=88.0.46.134, app_port=80, service_port=45766, type=XPATH, aatime=2020-07-21 22:23:38, service_ip=115.238.251.172}']]; nested: ElasticsearchException[Elasticsearch exception [type=illegal_state_exception, reason=Can't get text on a START_OBJECT at ]];
异常一、二、三都是在批量插入操作时发生的。主要原因在于动态模板Mapping映射。以Mapping映射中日期类型的格式化设置为例。Elasticsearch默认date类型的格式是"strict_date_optional_time||epoch_millis",是包含时区信息的时间格式或者毫秒。(更多说明详见官网:Date field type | Elasticsearch Guide [8.1] | Elastic)
对于上面的报错异常,可以自己增加日期类型字段的格式化匹配:
"time": {
"mapping": {
"type": "date",
"format": "MMM d HH:mm:ss||yyyy-MM-dd HH:mm:ss.SSS||HH:mm:ss||yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||strict_date_optional_time||epoch_millis"
},
"match": "*time"
}
elasticsearch 更多日期格式化参考:(format | Elasticsearch Guide [7.4] | Elastic)
支持完全可定制的日期格式,这些语法在DateTimeFormatter (Java Platform SE 8 )中有解释。例如:文章来源:https://www.toymoban.com/news/detail-404414.html
Jan 19 18:01:01 对应的格式化pattern为: MMM d HH:mm:ss
“Fri Aug 28 18:08:30 CST 2015”, 模式: “EEE MMM d HH:mm:ss ‘CST’ yyyy”
“Aug 28, 2015 6:8:30 PM”, 模式: “MMM d, yyyy h:m:s aa”
对于异常报错也可以采取ignore_malformed(忽略格式不对的数据)文章来源地址https://www.toymoban.com/news/detail-404414.html
到了这里,关于Elasticsearch 一些异常报错、注意事项(1)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!