Elasticsearch索引及字段命名规范
实际中使用Elasticsearch,首要需要考虑定义索引、映射以及字段等,本文总结下必要的命名规范。
索引
索引受文件系统的限制。仅可能为小写字母,不能下划线开头。同时需遵守下列规则:
- 不能包括 , /, *, ?, ", <, >, |, 空格, 逗号, #
- 7.0版本之前可以使用冒号:,但不建议使用并在7.0版本之后不再支持
- 不能以这些字符 -, _, + 开头
- 不能包括 . 或 …
- 长度不能超过 255 个字符
以上这些命名限制是因为当Elasticsearch使用索引名称作为磁盘上的目录名称,这些名称必须符合不同操作系统的约定。
我猜想未来可能会放开这些限制,因为我们使用uuid关联索引放在磁盘上,而不使用索引名称。
类型
类型名称可以包括除了null的任何字符,不能以下划线开头。7.0版本之后不再支持类型,默认为_doc.
字段
对字段命名规范及不能完全使用空格。点号可以使用,但用于对象类型,举例:
"foo.bar.baz": "abc"
相当于:
"foo": {
"bar": {
"baz": "abc"
}
}
“对象路径”必须是有效的。所以foo . . bar,这就产生了连锁反应,因为它不能解析到有效路径。类似的:
"foo.": {
"bar": {
"baz": "abc"
}
}
同样这个命名也是不容许的,因为以点号结尾会造成混淆。
路由
路由命名也是除了空的任何字符。问题是多个路由值传入查询字符串,使用逗号分隔,如:
?routing=foo,bar
如果路由值包含逗号,会造成路由值解析错误。
总结
本文简要描述了elasticsearch的命名规范。了解其命名规范可以事先确定其数据源中相关数据库的命名规范,避免不必要的转换。
本文参考链接:https://blog.csdn.net/neweastsun/article/details/95868716